👮‍♂️

GitHubでPRマージ後に自動でブランチ削除をする設定とPRマージ済みのリモートブランチをコマンドで全部消す

2023/10/06に公開

はじめに

アイスタイルで色々やってます白田です。

アイスタイルでは、AWSのインフラ構成をTerraformを使って管理しています。Terraformの管理は全アプリケーション/AWSアカウントの管理を行う共通的なリポジトリで行っていて、このリポジトリにPRを投げ変更を行っています。
数年前にリポジトリが作成されてから数千近いPRがマージされていますが、PRマージ後にFeatureブランチを残す/残さないがPR作成者によって統一されてなく、700近いPRマージ済みのブランチが残っていました。

今回はこのリポジトリの不要なブランチが溜まっていかないようにしつつ今ある不要なブランチを削除するため、PRマージ後のブランチの自動削除の設定導入と、便利コマンドを使って一気にマージ済みブランチの削除(お片付け)を実施しました。対応方法を残しておきます。

PRマージ後のブランチの自動削除の設定は、サクッと設定してもよかったのですが、導入前に一応社内の利用者へ確認してから行いました!

PRマージ後にブランチの自動削除設定

リポジトリの Setting > General > Automatically delete head branches にチェックを入れるだけ。(お手軽)

公式ドキュメント: https://docs.github.com/ja/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-the-automatic-deletion-of-branches

PRマージ済みのリモートブランチを全部消す

今回のリポジトリは、GitHub Flowで運用しているためmainブランチだけがProtected Branchになってます。

git branch -r --merged main | grep -v -e main | sed -e 's% *origin/%%'  | xargs -I% git push --delete origin % 

こちらを参考にさせていただきました。

https://gist.github.com/miukoba/fc3c10a25c1c675c1e97

ローカルブランチも消す

git fetch --prune

削除後

気持ちが良い。

株式会社アイスタイル

Discussion