【GitHub】保護ブランチへの直pushを禁止&レビュー必須にしよう

GitHub

 

「mainブランチにpushしちゃった。。。」

とか

「レビューされてないのにPRマージしちゃったよ。。」

といったミスをしたことがある方がいるのではないでしょうか?

 

いくら気を付けていても人間なのでミスはします。

なので、システム的に防げるように

GitHubで保護ブランチへの直pushを禁止&レビュー必須を設定していきます

 

GitHub Freeのプライベートリポジトリには適用されないためご注意ください!!

 

 

公式ドキュメント

 

・保護ブランチについて(⇒設定できるルールについて書かれています)

保護されたブランチについて - GitHub Docs
重要なブランチを保護するには、ブランチ保護ルールを設定します。このルールは、コラボレータがブランチへのプッシュを削除または強制できるかどうかを定義し、ステータスチェックのパスや直線状のコミット履歴など、ブランチへのプッシュの要件を設定します。

 

・ブランチ保護ルールを管理する(⇒設定方法について書かれています)

ブランチ保護ルールを管理する - GitHub Docs
ブランチ保護ルールを作成して、1 つ以上のブランチに特定のワークフローを強制することができます。たとえば、承認レビューを要求したり、保護されたブランチにマージされるすべての pull request について状態チェックを渡したりすることができます。

 

設定要件

 

mainブランチに対して以下のブランチ保護ルールを設定します

  • マージ前にPull Requestのレビュー必須
  • 最低1人のApproveがないとマージできない
  • 追加コミットがあった場合は再度レビュー必須
  • 管理者に対しても有効
  • 強制pushと削除を無効

 

設定してみる

 

GitHubで設定したリポジトリのページを開き、

Settings -> Branches -> Branch protection rules に遷移します

Add branch protection rule」をクリックしてブランチ保護ルールを設定します

 

 

mainブランチに対してブランチ保護ルールを適用する

 

Branch name pattern main と入力します

 

マージ前にPull Requestのレビュー必須

 

Require a pull request before merging にチェックを入れます

 

最低1人のApproveがないとマージできない

 

Require approvals にチェックを入れ、

Required number of approvals before merging を 1 にします

 

追加コミットがあった場合は再度レビュー必須

 

Dismiss stale pull request approvals when new commits are pushed にチェック

 

管理者に対しても有効

 

Do not allow bypassing the above settings にチェックをいれる

 

強制pushと削除を無効

 

Allow force pushes Allow deletionsチェックを入れない

デフォルトでチェックは入っていません

 

 

最後に「Create」をクリックしてルールを作成します

 

動作確認

 

GitHub Freeのプライベートリポジトリには適用されないためご注意ください!!

 

空のコミットをプッシュして動作確認してみます

 

次にPRの方を確認していきます

ブランチをきって、pushします

 

PRを作ってみると、下記のように「Merge Pull Request」がクリックできなくなっています

 

参考記事

 

Githubのリポジトリ設定で管理者も含めて直pushを禁止にする設定 - Qiita
設定場所対象のリポジトリ - Settings - Branches - Branch protection rules設定管理者も含めて全員プルリクエスト必須(直push禁止)にするには、下…
【あなたのことを】 GitHubの設定でmainブランチの誤更新を防止しよう 【守りたい】 | DevelopersIO
俺「あなたのこと、絶対守ります。」 mainブランチ「ありがとう///」
【Github】勝手にマージされないようにブランチを保護した | Zakkuriブログ
Githubでブランチを保護したお話
空コミットで実装前にプルリクエストを出す - Qiita
空コミットとは?通常、コミットはファイルの変更がないとできないようになっているが、オプション--allow-emptyをつける事で空コミットができる。$ git commit --allow-e…

コメント

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