Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/training.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ body:
- [ ] `git commit` した
- [ ] `git log --oneline` で履歴を確認した
- [ ] `git push -u origin training/<name>` した
- [ ] (任意)`main` への直接Pushが拒否されることを確認し、後片付けした
- [ ] `main` へ直接Pushしてはいけない理由を理解した(このRepositoryでは実演しません)
- [ ] Pull Requestを作成した(テンプレートを埋めた)
- [ ] CI(Training Check)が緑になった

Expand Down
9 changes: 7 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,13 @@ Gitコマンドを暗記することではなく、
> Branchを間違える・Commitを間違える・Conflictを起こす・Commitを取り消す。
> 壊し方と直し方の両方を、実際の開発Repositoryに入る前に経験してください。

このリポジトリでは `main` がBranch Protectionで保護されています。
`main` への直接Pushは**GitHubに拒否されます**。必ずPull Request経由で変更してください。
`main` への直接Pushは禁止です。必ずPull Request経由で変更してください。

> ⚠️ **このリポジトリは現在、技術的には `main` への直接Pushができてしまいます。**
> Branch Protectionを設定したいのですが、Private RepositoryかつGitHub Freeプランのため
> 現時点では有効化できません([docs/admin-setup.md](docs/admin-setup.md) に詳細)。
> **GitHubが止めてくれないので、ルールとして各自が守ってください。**
> 誤ってPushしてしまった場合は、隠さずに管理者へ報告してください。

---

Expand Down
19 changes: 13 additions & 6 deletions docs/02-rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,21 @@ git switch -c feature/example

という流れで変更します。

> このTraining Repositoryでは、`main` にBranch Protectionが設定されています。
> `main` への直接Pushを試すと、GitHubが以下のように拒否します。
実務のRepositoryでは、多くの場合 **Branch Protection** が設定されており、
`main` への直接Pushを試すとGitHubが以下のように拒否します。

```text
! [remote rejected] main -> main (protected branch hook declined)
```

> ⚠️ **このTraining Repositoryでは、Branch Protectionが有効になっていません。**
> Private RepositoryかつGitHub Freeプランのため、現時点では設定できないためです。
> つまり `main` へ直接Pushすると **成功してしまいます。**
>
> ```text
> ! [remote rejected] main -> main (protected branch hook declined)
> ```
> **絶対に試さないでください。** ここはGitHubが守ってくれない状態です。
> 誤ってPushしてしまった場合は、自分で `reset` や `revert` を試す前に管理者へ報告してください。
>
> 一度わざと試してみてください。これが実務での「守られている状態」です。
> 管理者向けの有効化手順は [admin-setup.md](admin-setup.md) にあります。

---

Expand Down
33 changes: 31 additions & 2 deletions docs/admin-setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,35 @@ Settings → Actions → General → 「Allow all actions and reusable workflows

Pull Requestを1件作って、**Training Check** が走ることを確認してください。

### 4. Branch Protection を設定する
### 4. Branch Protection を設定する ⛔ 現在は設定できません

> **状況(2026-08-22 時点)**
>
> Organization `Lumos-Programming` は **GitHub Free プラン**、このRepositoryは **Private** です。
> この組み合わせでは Branch Protection も Rulesets も利用できません。
> API から設定を試みると、以下が返ります。
>
> ```json
> {"message": "Upgrade to GitHub Pro or make this repository public to enable this feature.", "status": "403"}
> ```
>
> **有効化するには、次のどちらかが必要です。**
>
> | 方法 | 影響 |
> |---|---|
> | **A. Repositoryを Public にする** | 費用なしで即座に有効化できる。ただし `members/` の内容と全Commit履歴が世界に公開される。個人情報を書かせない運用が前提 |
> | **B. GitHub Team プランへアップグレード** | Privateのまま有効化できる。Organization単位の課金が発生する |
>
> **有効化するまでの間の運用**
>
> - Rule 1・2(mainで直接開発しない / 直接Pushしない)は **文書上のルール** として運用します
> - README・`docs/02-rules.md`・`exercises/01-clone-to-pr.md` には、
> 「保護されていないので直接Pushしないこと」を明記済みです
> - 実習1の Step 11.5(直接Pushが拒否されることの確認)は **スキップする**手順に変更済みです。
> 有効化した際は、これらの記述を元に戻してください
> - `main` に誤ってPushされた場合に備え、定期的にバックアップを取っておくと安全です

有効化できるようになったら、以下の手順で設定します。

Settings → Branches → Add branch protection rule

Expand Down Expand Up @@ -107,8 +135,9 @@ gh api -X PUT repos/Lumos-Programming/github-practice/branches/main/protection \
JSON
```

> ⚠️ **Private Repositoryの場合、プランによってBranch Protection / Rulesets が使えないことがあります。**
> ⚠️ **Private Repositoryの場合、プランによってBranch Protection / Rulesets が使えません。**
> 設定画面に項目が出ない場合は、Repositoryの可視性かOrganizationのプランを確認してください。
> (現在このRepositoryが該当します。上の「⛔ 現在は設定できません」を参照)
> どうしても使えない場合、Rule 1・2は「文書上のルール」として運用し、
> 実習1のStep 11.5(直接Pushが拒否されることの確認)はスキップしてください。

Expand Down
28 changes: 15 additions & 13 deletions exercises/01-clone-to-pr.md
Original file line number Diff line number Diff line change
Expand Up @@ -176,29 +176,31 @@ git push -u origin training/taro

---

## Step 11.5: (任意)mainへ直接Pushを試してみる
## Step 11.5: mainへ直接Pushしてはいけない(実演はしません)

ルールが「お願い」ではなく「仕組み」で守られていることを体験しておきます。

```bash
git switch main
git commit --allow-empty -m "Test protected branch"
git push
```

次のように拒否されれば成功です。
実務のRepositoryでは通常 **Branch Protection** が設定されていて、`main` へ直接Pushすると
GitHubがこう拒否します。

```text
! [remote rejected] main -> main (protected branch hook declined)
```

**必ず後片付けをしてください。**
ルールが「お願い」ではなく「仕組み」で守られている状態です。

> ⚠️ **このRepositoryではBranch Protectionが有効になっていません。**
> Private RepositoryかつGitHub Freeプランのため、現時点では設定できないためです。
> つまりここで直接Pushを試すと **本当に成功してしまい、研修環境が壊れます。**
>
> **この確認はスキップしてください。** 管理者が有効化したら、改めて試して構いません。

代わりに、`git status` で自分が `main` にいないことを確認する癖をつけてください。

```bash
git reset --hard origin/main
git switch training/<your-name>
git branch
```

`* training/<your-name>` に `*` が付いていればOKです。

---

## Step 12: GitHubでPull Requestを作成
Expand Down
Loading