ホッケ肉厚です🐟
開発をしているとついつい消し忘れのブランチが溜まってしまうこと、よくあるのではあると思います。
クローズしたブランチは手動 or GitHub上から必ず消してね!という運用を全体に周知しても、
- デモやスパイク用に作ったブランチがゴースト化しクローズのタイミングを失ってしまう
- (私みたいな)細かいことを忘れがちなメンバーが上手く運用に乗ってくれない
などなど、様々な理由で見捨てられた可哀想なブランチが生まれてしまうのが世の常…
そんなブランチたちを成仏させてやりたい場合は、
$ git branch --merged | egrep -v '\*|main' | xargs -I % git branch -d %
で一括削除できます。
コマンドを分解すると、
git branch --merged
は、ローカルでマージ済みのブランチ一覧を表示します。
| egrep -v '\*|main'
は、パイプ
|
でブランチ一覧を受け取り、egrep -v
で後続の引数に一致しないもののみをフィルタリングします。
ここではカレントブランチ*
とベースブランチmain
を指定していますが、develop
やfeature
など運用上他にも消してはいけないブランチがある場合は適宜パイプで繋げて書けばOK。| xargs -I % git branch -d %
は、パイプ
|
で絞り込み済みのブランチ一覧を受け取り、xargs -I %
でプレースホルダーに各行を展開、その後git branch -d %
でそれぞれのブランチを安全に削除します。毎回コマンドを打つのが面倒であれば、適宜エイリアスを設定してあげると更に楽ですね👀
: : purge-branches="git branch --merged | egrep -v '\*|main' | xargs -I % git branch -d %"