前置き
普段git操作はIDEでぽちぽちしているけど、爆速で増えていくブランチの削除が非常に面倒。
コマンド一発で快適に作業したいので、やり方を残しておく。
コマンド
git fetch -p && git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -D
処理の流れ
-
git fetch -p- リモートの最新状態を取得
-
-p(prune)でリモートから消えたブランチの追跡情報をローカルから削除。
-
git branch -vv- ローカルブランチ一覧を詳しく表示して、各ブランチがどのリモートブランチを追跡しているかを確認。
- goneがついていると、「リモートにもう存在しない」
-
grep ': gone]'- goneとタグづけされている行だけを抽出する。
- やってることは「リモートで削除されているブランチ」の一覧
-
awk '{print $1}'- 抽出された行からブランチ名だけ取り出す
-
xargs git branch -D- 取り出したブランチ名をまとめて渡して強制削除