GithubでPull Requestがマージされた後ブランチを毎回削除するのが面倒だったので、自動で削除されるようにしてみました。
また、Git-flow運用している場合、develop,stagingのようなブランチからPRを出す場合があるので、これらのブランチからPul lRequestを出した際は、削除されないようにしておきます。
参考にしたGithubのヘルプのURLも掲載しておきます。
※この設定は2020/5/13時点の情報であり、今後Githubの仕様変更などにより画面・設定方法が変わる可能性があります。
Github上の設定
Pull Requestがマージされた時に自動削除されるように設定する
マージされた時にブランチが削除されるように設定します。プロジェクトの「Settings」=>「Options」を選択し
「Automatically delete head branches」 をチェックします。保存ボタンはないので、チェックを付けた時点で反映されます。
マージすると以下のfeature/branch
ブランチが自動削除されます。
ただ、多くのプロジェクトではGit-flow運用していて、developやstagingからPull Requestを出すことがあると思います。このままだとこれらのブランチが自動削除されてしまうので、「Branch protection rules」を設定し、ブランチが削除されないようにします。
消えてほしくないブランチを保護する
Githubのドキュメントによると
保護されたブランチは、GitHub Free 及びGitHub FreeのOrganizationではパブリックリポジトリでのみ使用でき、GitHub Pro、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server ではパブリックおよびプライベートリポジトリで使用できます。
という記載があり、事前に
- アカウント課金する
- 該当リポジトリをパブリックにする
など対応が必要です。
設定は、プロジェクトの「Settings」 => 「Branches」を選択し、「Add rule」でブランチ毎にルールを追加します。
ブランチのそれぞれで、「Allow deletions」のチェックを外すと、「Automatically delete head branches」を設定してあっても、自動削除されなくなります。
また、デフォルトブランチに設定してある場合も自動削除されなかったので、もしdevelop
ブランチがデフォルトになっているようであれば、develop
ブランチは「Allow deletions」の設定はなくても大丈夫です。
確認
設定完了後、以下のようにPRを出して、feature/branch
ブランチのみが削除されることを確認できます。
feature/branch
ブランチ からdevelop
ブランチにPull Requestを出す- =>
feature/branch
ブランチが自動削除される
- =>
develop
ブランチ からstaging
ブランチにPull Requestを出す- => いずれのブランチも自動削除されない
staging
ブランチ からmaster
ブランチにPull Requestを出す- => いずれのブランチも自動削除されない
参考
「Automatically delete head branches」のhead branchesってどういう意味だろうと思い、Stack overflowで調べてみたところチェックアウトしたブランチのことのようです。
Githubでは、Pull Requestを出した時の元のブランチのことをHead Branchと呼ぶのかー、と勉強になりました。