main ブランチ保護ルール設定ガイド
本資料は、GitHubリポジトリの中核となる main ブランチを安全かつ一貫した品質で運用するための「ブランチ保護ルール(Branch Protection Rule)」を解説するガイドです。小規模チームから大規模組織に至るまで、誤ったコミットやレビュー抜けによるトラブルを未然に防ぎ、信頼性の高い開発フローを構築することを目的としています。
以下の内容を順を追って理解し、リポジトリの公開・非公開や利用プラン(Free/Pro/Team 等)に応じて最適な設定を適用してください。
- 基本設定:プルリクエスト必須化や承認ルールなど、全チームで必ず押さえたい項目
- 高度オプション:会話の解決や署名コミット、リニアヒストリーなど、セキュリティや品質担保を一段高めるための設定
- 無料版との比較:GitHub Free で使える機能と、Pro/Team プランで追加できる機能の違い
本ガイドを通じて、main ブランチへの変更管理を強化し、レビュー文化と自動化された品質チェックの両輪で、開発スピードとコードの信頼性を両立させましょう。
目次
GitHubのリポジトリ設定画面
後述していますが、無料版の場合、Privete(非公開)では、選択できない機能があります

1. 概要
main ブランチへの直接コミットを禁止し、プルリクエスト(PR)を介したコードレビューと承認を必須化することで、品質担保とガバナンスを強化します。
2. 適用対象
- ブランチ名パターン:main
- 適用ブランチ:main
3. 主な設定項目
項目名 | 設定値 | 解説 |
---|---|---|
Require a pull request before merging | ✅ 有効 | 直接 push を禁止し、必ず PR → マージ のワークフローを強制。誤ったコミットの混入を防止。 |
Require approvals | ✅ 有効 | PR をマージするには、最低 1 人 の承認(Approve)が必要。コード品質の担保と知見の共有を促進。 |
Dismiss stale pull request approvals when new commits are pushed | ☐ 無効 | PR 承認後に新コミットが追加された場合、既存の承認を取り消す。変更点を必ず再レビューしたいときに有効。 |
Require review from Code Owners | ✅ 有効 | CODEOWNERS に指定されたオーナーからの承認を必須化。各ファイルの責任者が必ず目を通す。 |
Require approval of the most recent reviewable push | ☐ 無効 | 最新コミットが自分自身のものであっても、他者による再承認を必須化。「自分のコミットは自分で承認できない」制約をかけたい場合に有効。 |
Require status checks to pass before merging | ☐ 無効 | CI/テスト結果(GitHub Actions・外部CIなど)のすべてのチェックが成功しないとマージ不可に。テスト未通過のコード流入を防止。 |
4. その他の設定オプション
項目名 | 設定値 | 解説 |
---|---|---|
Require conversation resolution before merging | ☐ 無効 | PR 内の全レビューコメントを「Resolve」しないとマージ不可。未解決の議論を残さず完結させたい場合に利用。 |
Require signed commits | ☐ 無効 | GPG/S-MIME 署名付きコミットのみを許可。コミットの真正性・改ざん防止を強化したいプロジェクト向け。 |
Require linear history | ☐ 無効 | –no-ff マージのみを許可し、マージコミットやリベースを禁止。コミット履歴を直線化し可読性を向上。 |
Require deployments to succeed before merging | ☐ 無効 | 指定したデプロイ環境(例:staging)へのデプロイが成功した PR のみマージ許可。本番リリース前の検証を自動化。 |
Lock branch | ☐ 無効 | ブランチを完全読み取り専用にし、PR も含め一切の更新を禁止。緊急凍結やアーカイブ用途に利用。 |
Do not allow bypassing the above settings | ☐ 無効 | 管理者や「bypass branch protections」権限を持つユーザーにも、本ルールを強制適用。例外なしで保護を徹底。 |
Allow force pushes | ☐ 無効 | 全ユーザーに –force プッシュを許可。歴史書き換えを抑制したい場合はオフ推奨。 |
Allow deletions | ☐ 無効 | 全ユーザーにブランチ削除を許可。誤削除防止のため、不要であればオフに。 |
5. 期待されるワークフロー
- 開発者 は feature/… や fix/… ブランチで作業
- コードをコミットし、プルリクエスト を作成
- 担当レビュアー(+CODEOWNERS)が Approve
- 必要に応じてステータスチェックや会話解決を行い
- 承認後、PR をマージして main に反映
6. 効果とメリット
- 品質向上:未レビュー・未テストの変更を防ぎ、バグ流入を抑制
- 責任明確化:CODEOWNERS やコミット署名で責任者を特定しやすく
- 履歴の可読性向上:リニアヒストリーや会話解決で、どの変更がなぜ行われたか追いやすく
7. 次のステップ(おすすめカスタマイズ)
- ステータスチェック追加:Lint/ビルド/テストなど、必要なチェックを追加
- コミット署名必須化:重要プロジェクトで真正性を担保
- 会話解決必須化:全レビューコメントを解決してからマージ
- デプロイ成功条件設定:staging 環境で動作検証済みの PR だけを main にマージ
8. 無料版(GitHub Free)との機能比較
機能/プラン | GitHub Free(Publicのみ) | GitHub Pro/Team以上(Private含む) |
---|---|---|
Require pull request before merging | ✅ | ✅ |
Require approvals | ✅ | ✅ |
Dismiss stale approvals | — | ✅ |
Require review from Code Owners | — | ✅ |
Require recent-push approval | — | ✅ |
Require status checks | ✅(Publicのみ) | ✅ |
Require conversation resolution | — | ✅ |
Require signed commits | — | ✅ |
Require linear history | — | ✅ |
Require deployments before merging | — | ✅ |
Lock branch | — | ✅ |
Do not allow bypassing settings | — | ✅ |
Allow force pushes | — | ✅(設定可能) |
Allow deletions | — | ✅(設定可能) |
補足
- GitHub Free では パブリックリポジトリ のみ基本的なブランチ保護が利用可能。
- プライベートリポジトリ に対しては、Pro/Team 以上へアップグレードが必要です。
以上、無料版との比較を含めた完全ガイドです。チーム構成やリポジトリの公開/非公開状況に応じてプランをご検討ください。
ディスカッション
コメント一覧
まだ、コメントがありません