Githubで特定のブランチを保護して、直pushや削除を防止する

 

動作イメージ

保護設定したブランチに、条件(レビューの承認や、CI)を満たしていない状態で直pushすると以下のメッセージが表示され、pushをキャンセルできる

remote: error: GH006: Protected branch update failed for refs/heads/main.
remote: error: 2 of 2 required status checks are expected.

また、CIが通る前はマージプルリクボタンが押せなくなる。

設定方法

対象リポジトリブランチも Settings > Branches > Branch protection rules > Add Rule に設定項目がいろいろ並んでいます。

保護したいブランチ名を入力します。

直pushを禁止したい

ブランチ名を強制pushや削除されないように保護する方法やいくつかあるようなのですが、今回はよく使いそうな以下2点を紹介します。(上から2つ)

  • Require a pull request before merging
    保護ブランチへのマージ前に、レビューを必須とする
  • Require status checks to pass before merging
    保護ブランチへのマージ前に、特定のステータスチェックを必須とする

保護ブランチへのマージ前に、レビューを必須とする

  • Require a pull request before mergingにチェックを付ける
  • Require approvalsにチェックを付け、必要なレビュー数(デフォルト1)を設定する

その他の設定項目

  • Dismiss stale pull request approvals when new commits are pushed
    承認後に新たなcommitがpushされたら、承認が自動的に取り消される
  • Require review from Code Owners
    コードオーナーのレビューを必須に
  • Restrict who can dismiss pull request reviews
    プルリクのレビューを却下できる人,チームを指定

保護ブランチへのマージ前に、特定のステータスチェックを必須とする

  • Require status checks to pass before merging にチェックを付ける
  • CIを検索して登録する

管理者もブランチ保護を適用する

デフォルトでは、管理者権限のユーザーはブランチ保護のルールが適用されません。適用するには、Include administratorsにチェックを入れます

 

以上です。

コメント

タイトルとURLをコピーしました