Gitのブランチ一括削除

1 min read読了の目安(約1400字

ローカルブランチを一括削除

git branch -l | grep -E *-bak | xargs git branch -d

解説

git branch -l
ローカルブランチの一覧を取得する

出力結果
$ git branch -l
  hoge
* hoge-bak
  main

grep -E *.-bak
git branch -lで取得したローカルブランチ一覧から、正規表現を使って-bakで終わるブランチを抽出する

出力結果
$ git branch -l | grep -E *-bak
* hoge-bak

xargs git branch -d
grep結果のブランチを削除する

出力結果
git branch -l | grep -E *-bak | xargs git branch -d
Deleted branch hoge-bak (was a22de8f).

よくわからないエラーが出て-dで消えない場合は開発メンバーに確認してみてください。
個人開発の場合は、作業ディレクトリをコピペしてバックアップを取っておくと吉。
エラー内容が理解できてる場合は-dの代わりに-Dを使って削除してください。

リモートブランチを一括削除

git branch -r | grep -E *-bak | cut -d "/" -f 2 | xargs git push --delete origin

やらかしてしまった時のバックアップとして
削除前に別ディレクトリでgit cloneしておくことをオススメします。

解説

git branch -r
リモートブランチの一覧を取得する

$ git branch -r
  origin/hoge
  origin/hoge-bak

grep -E *.-bak
同上

出力結果
$ git branch -r | grep -E *-bak
  origin/hoge-bak

cut -d "/" -f 2
origin/hoge-bakからhoge-bakのみを取得する。
-d "/"/に区切って、cut -f 2で区切った文字列の2つ目を取得する。
今回だとoriginとhoge-bakの2つに区切られて、そこから2つ目のhoge-bakを取得する。

出力結果
$ git branch -r | grep -E *-bak | cut -d "/" -f 2
hoge-bak

xargs git push --delete origin
grep結果のリモートブランチを削除する

$ git branch -r | grep -E *-bak | cut -f 2 -d "/" | xargs git push --delete origin
To github.com:shibainurou/zenn-contents.git
 - [deleted]         hoge-bak