GitHubで直push禁止を試してみた
はじめに
この記事では、「GitHubで直push禁止を設定する方法」について書いています。
ブランチ戦略では特定のブランチはpush禁止というルールにしていても、間違えてpushしてしまったりというのがあります。となったのが記事を書いたきっかけでした。
自分に向けた備忘録の意味もありますが、「GitHubで特定のブランチを直push禁止にしたい」「GitHubのpush禁止についてどんな設定があるか知りたい」な人の一助になれば嬉しいです。
要点だけ
- リポジトリの
Setting
>Branches
からAdd rule
ボタンを押し、自分の望むPush禁止の設定にする
手順
リポジトリのSetting
タブを開くと右側の欄にBranches
の項目があるので、そちらをクリックしてください。すると右側にBranch protection rules
というテキストが見えるかと思いますが、ここがBranchの保護ルールを表示、設定する箇所です。Branch protection rules
のテキストの右横にAdd rule
ボタンがありますのでそちらをクリックしてください
下の2枚の画像のように、Branchに関するルール(設定)を行う画面が表れます。(都合上、2つの画像に分けて表示してます。)
Branch name pattern
は、適用したいブランチの名前を指定します。
今回は、main
ブランチに対して直Push禁止を実施してみたいので、main
と入力します。
次に設定ですが、ひとまずは「とにかくpushすることを禁止」にしてみたいと思います。
2枚目の画像の一番上にLock branch
(読み取り専用としプッシュは出来ないようにする)というのがあるかと思いますがこれにチェックを入れます。
次に、その下にあるDo not allow bypassing the above setting
という項目にもチェックを入れます。
Note
Do not allow bypassing the above setting
ですが、リポジトリへの管理者権限を持つユーザーなど特別な権限を持つユーザーへの設定の適用をどうするかという項目で、チェックするとどんなユーザーにもブランチの保護設定が適用されます。
2つの項目にチェックを入れたら一番下にあるCreate
ボタンを押しましょう。すると下のような画面になり、Branch protection rules
にルールが追加されたことが確認できます。
それでは、実際にpushができないかどうかを確かめてみます。
ローカルで適当に変更を加えてcommit
-> push
をし、下記のようなメッセージが出れば、ちゃんとpush禁止の設定ができていることになります。
remote: error: GH006: Protected branch update failed for refs/heads/main. remote: error: Cannot change this locked branch To https://github.com/xxxx/xxxxx.git ! [remote rejected] main -> main (protected branch hook declined) error: failed to push some refs to 'https://github.com/xxxx/xxxxx.git'
おわりに
「GitHubで直push禁止を設定する方法」について解説しました。
直pushを禁止することで、ブランチ戦略をより確実に効果的に推進することができるようになる、、、かもしれません。
さいごに、記事を書く上で参考にしたサイトのリンクを以下に掲載します。合わせて読んでいただくと良いかと思います。
https://docs.github.com/ja/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/about-protected-branchesdocs.github.com