を使用するとgit remote prune origin
、リモート上に存在しないローカル ブランチを削除できます。
しかし、それらのリモート ブランチから作成されたローカル ブランチも削除したいです (マージされていないかどうかを確認できれば便利です)。
これどうやってするの?
ベストアンサー1
プルーニング後、 でリモート ブランチのリストを取得できますgit branch -r
。 リモート追跡ブランチを含むブランチのリストは で取得できますgit branch -vv
。 したがって、これら 2 つのリストを使用すると、リモートのリストにないリモート追跡ブランチを見つけることができます。
この行で問題は解決するはずです (bash
または が必要でzsh
、標準の Bourne シェルでは機能しません)。
git fetch -p ; git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d
この文字列はリモート ブランチのリストを取得し、egrep
標準入力を介して に渡します。そして、リモート追跡ブランチを持つブランチをフィルタリングし ( と を使用しgit branch -vv
て を持つブランチをフィルタリングしますorigin
)、その出力の最初の列を取得します。これがブランチ名になります。最後に、すべてのブランチ名を delete branch コマンドに渡します。
オプションを使用しているため-d
、このコマンドを実行したときに、現在のブランチにマージされていないブランチは削除されません。