削除されたリモートブランチを upstream にしているローカルブランチを削除したい
そういう便利機能がありそうでなかったので自分でやるしかなかった。
git fetch --prune git branch --format='%(refname:short) %(upstream:track)' | grep '\[gone\]' | awk '{print $1}' | xargs -r git branch -d
解説
git fetch --prune
リポジトリを同期する。
削除されたリモートブランチの remote refs も削除する。
git branch --format='%(refname:short) %(upstream:track)'
ローカルブランチ名に upstream
の状況を表示する。
リモートブランチの状況 | 表示 |
---|---|
リモートブランチが進んでいるとき | <name> [behind <number>] |
ローカルブランチが進んでいるとき | <name> [ahead <number>] |
リモートブランチが削除されているとき | <name> [gone] |
grep '\[gone\]'
リモートブランチが削除されたブランチ名だけを残す。
awk '{print $1}'
ブランチ名だけを残す。
xargs -r git branch -d
残っているブランチ名を指定して削除している。
面倒なときは git branch -D
として強制的に削除すればいい。