リモートの同等ブランチが存在しなくなったすべての追跡ブランチを削除する簡単な方法はありますか?
例:
ブランチ(ローカルおよびリモート)
- マスター
- 起源/マスター
- オリジン/バグ修正a
- オリジン/バグ修正-b
- オリジン/バグ修正-c
ローカルには、マスター ブランチしかありません。今は、bug-fix-aで作業する必要があるので、チェックアウトして作業し、変更をリモートにプッシュします。次に、 bug-fix-bでも同じことを行います。
ブランチ(ローカルおよびリモート)
- マスター
- バグ修正
- バグ修正b
- 起源/マスター
- オリジン/バグ修正a
- オリジン/バグ修正-b
- オリジン/バグ修正-c
現在、ローカル ブランチmaster、bug-fix-a、bug-fix-b があります。Master ブランチのメンテナーは、私の変更をmasterにマージし、すでにマージしたすべてのブランチを削除します。
現在の状態は次のようになります。
ブランチ(ローカルおよびリモート)
- マスター
- バグ修正
- バグ修正b
- 起源/マスター
- オリジン/バグ修正-c
ここで、リモート リポジトリに表示されなくなったブランチ (この場合はbug-fix-a、bug-fix-b )を削除するコマンドを呼び出したいと思います。
これは既存のコマンド に似ていますgit remote prune origin
が、 のようなものですgit local prune origin
。
ベストアンサー1
git remote prune origin
リモート上にない追跡ブランチを削除します。
git branch --merged
現在のブランチにマージされたブランチを一覧表示します。
xargs git branch -d
標準入力にリストされているブランチを削除します。
によってリストされたブランチを削除するときは注意してくださいgit branch --merged
。リストにはmaster
、削除したくないブランチやその他のブランチが含まれている可能性があります。
ブランチを削除する前にリストを編集する機会を与えるには、1 行で次の操作を実行します。
git branch --merged >/tmp/merged-branches && \
vi /tmp/merged-branches && xargs git branch -d </tmp/merged-branches