GitHub

[GitHub]プルリクエスト&コードレビューでのみマージを許可する

Github logo

チーム開発においてGitHubでソース管理を行っておりますが、誤って直接マージをしてしまうことがあるため、プルリクエストでのみマージを許可する設定を行いました。
その時の手順を記録しておきます。

0. 状況

  • ブランチ: `staging`に対して直接マージをしてしまわないようにする
  • 複数人数で開発を行っており、担当開発以外がレビューを行ってマージ許可をするようにする
  • プライベートリポジトリ(非公開)でこのルールを強制するには、有料プラン(GitHub Pro / Team / Enterprise) が必要です。無料プランのままだと、設定は保存できますがルールは適用されません

1. ブランチ保護ルールの設定

  1. GitHubのリポジトリにアクセスします。
  2. 画面上部の「Settings」タブをクリックします。
  3. 左側のメニューから「Branches」を選択します。
  4. Branch protection rules」セクションで「Add rule」ボタンをクリックします。
  1. New branch ruleset」画面で以下の設定を行います。
    • 5-1. Ruleset Name: `StagingProtection`(保護したいブランチ名を指定)
    • 5-2. Enforcement status: `Active` に設定します。
    • 5-3. 「Target branches」の「Add target」から「Include by name」を選択し、`staging` を追加します。
  1. 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
      • 強制プッシュを禁止します。
  2. 設定が完了したら、「Create」ボタンをクリックしてブランチ保護ルールを保存します。

これで誤って直接マージしてしまうことを防ぎ、プルリクエストを通じてコードレビューを行うことで、コードの品質を保つことができます。