7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

git push事故を、気合ではなく、GitHub Branch Protectionで防ぐ

Last updated at Posted at 2019-01-01

masterにpushしないよう注意しましょう

昔はそんなことを気にしていました。今でもそういう現場があるかもしれません。

現在はGitHubのブランチプロテクションという素晴らしいものがあります。使いましょう。無料です。人類の注意力には限りがあるので、仕組みで防ぎましょう。

公式マニュアル

ブランチプロテクションは、リポジトリのAdmin権限を持っているか、OrganizationのOwnerロールであれば、設定できます。ブランチ毎に設定を組み立てます。

設定画面は

リポジトリ -> Settings -> Branches -> Add rule

スクリーンショット 2019-01-01 18.04.45.png

設定例

例として、gitflowっぽく、

  • プルリクは、developから生やして、developにマージする
  • developは、masterから生やして、masterにマージする
  • hotfixのプルリクは、
    • masterから生やして、masterにマージする
    • developにもマージする

とかそんな運用をしてるイメージで。

develop

  • レビュー必須。いつでもapproveしてOK。ただし、approve後に更新されたら、再度approveが必要にする。approve後に、対応漏れが発覚して、追加のcommitした、などの場合を想定してます。
  • CIの正常終了が必須
  • リポジトリにAdmin権限を持ってるメンバーも例外なく適用

で、画像のようにチェックつけていきます。developブランチへのpushがガードされるのと、developブランチ宛てのプルリクに関して、レビューとかCIとかが必須になります。

スクリーンショット 2019-01-01 17.08.54.png

master

  • レビュー必須。いつでもapproveしてOK。ただし、approve後に更新されたら、再度approveが必要にする。approve後に、対応漏れが発覚して、追加のcommitした、などの場合を想定してます。
  • hotfixを想定して、CIの終了は待たずともマージして良いことにする
    • 平時は、プルリクでCI必須にして担保しているから良しとする
    • 緊急時は、レビューで担保する。だって緊急でしょ
  • リポジトリにAdmin権限を持ってるメンバーも例外なく適用

masterブランチへのpushがガードされるのと、master宛てのプルリクに関して、設定どおりにガードされます。

スクリーンショット 2019-01-01 17.09.14.png
7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?