「mainブランチにpushしちゃった。。。」
とか
「レビューされてないのにPRマージしちゃったよ。。」
といったミスをしたことがある方がいるのではないでしょうか?
いくら気を付けていても人間なのでミスはします。
なので、システム的に防げるように
GitHubで保護ブランチへの直pushを禁止&レビュー必須を設定していきます
公式ドキュメント
・保護ブランチについて(⇒設定できるルールについて書かれています)
![](https://hisuiblog.com/wp-content/uploads/cocoon-resources/blog-card-cache/513a2fe403a179cd13970f0e76bdc69e.png)
・ブランチ保護ルールを管理する(⇒設定方法について書かれています)
![](https://hisuiblog.com/wp-content/uploads/cocoon-resources/blog-card-cache/513a2fe403a179cd13970f0e76bdc69e.png)
設定要件
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」をクリックしてルールを作成します
動作確認
空のコミットをプッシュして動作確認してみます
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// mainブランチか確認 $ git branch * main // 空のコミットを作成 $ git commit --allow-empty -m "test_commit" [main ff95cf8] test_commit // mainブランチにpush $ git push Enumerating objects: 1, done. Counting objects: 100% (1/1), done. Writing objects: 100% (1/1), 187 bytes | 15.00 KiB/s, done. Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 remote: error: GH006: Protected branch update failed for refs/heads/main. remote: error: Changes must be made through a pull request. To https://github.com/*******/**********************.git ! [remote rejected] main -> main (protected branch hook declined) error: failed to push some refs to 'https://github.com/*******/**********************.git' // ↑のようにエラーになりpushできない // 後片付け:空のコミットを取り消しておく $ git reset --soft HEAD^ |
次にPRの方を確認していきます
ブランチをきって、pushします
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ git checkout -b test_commit Switched to a new branch 'test_commit' $ git commit --allow-empty -m "test_commit" [test_commit 6a683e2] test_commit $ git push origin test_commit Enumerating objects: 1, done. Counting objects: 100% (1/1), done. Writing objects: 100% (1/1), 187 bytes | 17.00 KiB/s, done. Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 remote: remote: Create a pull request for 'test_commit' on GitHub by visiting: remote: https://github.com/******/***************/pull/new/test_commit remote: To https://github.com/******/***************.git * [new branch] test_commit -> test_commit |
PRを作ってみると、下記のように「Merge Pull Request」がクリックできなくなっています
参考記事
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9R2l0aHViJUUzJTgxJUFFJUUzJTgzJUFBJUUzJTgzJTlEJUUzJTgyJUI4JUUzJTgzJTg4JUUzJTgzJUFBJUU4JUE4JUFEJUU1JUFFJTlBJUUzJTgxJUE3JUU3JUFFJUExJUU3JTkwJTg2JUU4JTgwJTg1JUUzJTgyJTgyJUU1JTkwJUFCJUUzJTgyJTgxJUUzJTgxJUE2JUU3JTlCJUI0cHVzaCVFMyU4MiU5MiVFNyVBNiU4MSVFNiVBRCVBMiVFMyU4MSVBQiVFMyU4MSU5OSVFMyU4MiU4QiVFOCVBOCVBRCVFNSVBRSU5QSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ZTZiZDQ2OTdiZWNiODNiZDA5NzdhYWVhZDEzYWEwNzk&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwZGFpamlubG9hZCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9NTNmM2RlODExN2MyYjVlOGMzMWE3NDM0OWNjMzZlYTg&blend-x=142&blend-y=491&blend-mode=normal&s=b4fd977fe2560e43796737076bc14c3c)
![](https://hisuiblog.com/wp-content/uploads/cocoon-resources/blog-card-cache/91eb2f9137effbf2d7ef323771b1fe2c.png)
![](https://hisuiblog.com/wp-content/uploads/cocoon-resources/blog-card-cache/000865af9efcff9265c131dd852ae7f2.png)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9JUU3JUE5JUJBJUUzJTgyJUIzJUUzJTgzJTlGJUUzJTgzJTgzJUUzJTgzJTg4JUUzJTgxJUE3JUU1JUFFJTlGJUU4JUEzJTg1JUU1JTg5JThEJUUzJTgxJUFCJUUzJTgzJTk3JUUzJTgzJUFCJUUzJTgzJUFBJUUzJTgyJUFGJUUzJTgyJUE4JUUzJTgyJUI5JUUzJTgzJTg4JUUzJTgyJTkyJUU1JTg3JUJBJUUzJTgxJTk5JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz05MWE2OTllMjRiMGE4M2VmNDI4YjhkMmU5OWIwMGY0YQ&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwa2F0c3VraWkmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWFlODI3MDBmMTQ2ZDJmMGQ0YWQ2ZDFjMjkzMDIyMDU0&blend-x=142&blend-y=491&blend-mode=normal&s=2ff96b776067ce770039bb07b6b83fcf)
コメント