チーム開発においてGitHubでソース管理を行っておりますが、誤って直接マージをしてしまうことがあるため、プルリクエストでのみマージを許可する設定を行いました。
その時の手順を記録しておきます。
0. 状況
- ブランチ: `staging`に対して直接マージをしてしまわないようにする
- 複数人数で開発を行っており、担当開発以外がレビューを行ってマージ許可をするようにする
- プライベートリポジトリ(非公開)でこのルールを強制するには、有料プラン(GitHub Pro / Team / Enterprise) が必要です。無料プランのままだと、設定は保存できますがルールは適用されません
1. ブランチ保護ルールの設定
- GitHubのリポジトリにアクセスします。
- 画面上部の「Settings」タブをクリックします。
- 左側のメニューから「Branches」を選択します。
- 「Branch protection rules」セクションで「Add rule」ボタンをクリックします。

- 「New branch ruleset」画面で以下の設定を行います。
- 5-1. Ruleset Name: `StagingProtection`(保護したいブランチ名を指定)
- 5-2. Enforcement status: `Active` に設定します。
- 5-3. 「Target branches」の「Add target」から「Include by name」を選択し、`staging` を追加します。


- 「Branch rules」には以下の項目を設定します。
- 6-1. 「Restrict deletions」: ON
- ブランチの削除を禁止します。
- 6-2. 「Require a pull request before merging」: ON
- プルリクエストを介してのみマージを許可します。
- 6-3. 「Require approvals」: ON
- マージ前にレビュー承認を必須にします。
- 「Required approving reviews」に必要な承認数を設定します(例: 1)。
- 6-4. 「Dismiss stale pull request approvals when new commits are pushed」: ON
- 新しいコミットがプッシュされた場合、既存の承認を無効にします。
- 6-5. 「Require conversation resolution before merging」: ON
- PR内でついたコメント(指摘事項)がすべて「Resolved(解決済み)」にならないとマージできないようにします。指摘を無視してマージしてしまうミスを防げます。
- 6-6. 「Block force pushes」: ON
- 強制プッシュを禁止します。
- 6-1. 「Restrict deletions」: ON
- 設定が完了したら、「Create」ボタンをクリックしてブランチ保護ルールを保存します。
これで誤って直接マージしてしまうことを防ぎ、プルリクエストを通じてコードレビューを行うことで、コードの品質を保つことができます。
