結論
git branch --format '%(refname:short)' | grep -vE "^(main|release|$(git branch --show-current))$" | xargs -n 1 git branch -D
このコマンドで任意のブランチとカレントブランチ以外を一括で削除できます。
溜まっていくローカルブランチ
レビューしているとローカルにブランチが溜まっていきますよね?
私は溜まっていました。。
定期的にgit branch -d
で一つずつ削除していたんですが、たまにマージされていないとかでエラーが発生して地味にストレス。。。
しかしまとめて消すのはmainとかカレントブランチとか気にしないといけない。
そんな葛藤を一発で解決するコマンドです!
解説
-
ブランチ名のリストアップ
git branch --format '%(refname:short)'
ローカルリポジトリ内の全てのブランチ名を短い形式(ブランチ名のみ)で取得します。 -
特定のブランチを除外
grep -vE "^(main|release|$(git branch --show-current))$"
特定のブランチ(main
,release
,現在のブランチ)を除外するために、正規表現を使用してフィルタリングします。
・-v
:一致する行を除外します
・-E
:拡張正規表現を使用します
・'^(main|release|$(git branch --show-current))$'
:カッコ内のブランチ名に一致する行を除外します。$(git branch --show-current)
は現在のブランチを取得するサブコマンドです。
除外するブランチは自由に変更してください。 -
ブランチの一括削除
xargs -n 1 git branch -D
フィルタリングされたブランチ名を1つずつgit branch -D
コマンドに渡して、削除を実行します。
・xargs
:前のコマンドの出力を引数として受け取ります。
・-n 1
:1回に1つの引数を渡します。
・git branch -D
:指定されたブランチを強制的に削除します。強制でない通常の削除の場合は-d
を指定します。
それらをパイプ('|')で繋ぎます。
これであなたも快適なレビューライフを!!!