リモートに存在しない追跡ブランチを削除する 質問する

リモートに存在しない追跡ブランチを削除する 質問する

リモートの同等ブランチが存在しなくなったすべての追跡ブランチを削除する簡単な方法はありますか?

例:

ブランチ(ローカルおよびリモート)

  • マスター
  • 起源/マスター
  • オリジン/バグ修正a
  • オリジン/バグ修正-b
  • オリジン/バグ修正-c

ローカルには、マスター ブランチしかありません。今は、bug-fix-aで作業する必要があるので、チェックアウトして作業し、変更をリモートにプッシュします。次に、 bug-fix-bでも同じことを行います

ブランチ(ローカルおよびリモート)

  • マスター
  • バグ修正
  • バグ修正b
  • 起源/マスター
  • オリジン/バグ修正a
  • オリジン/バグ修正-b
  • オリジン/バグ修正-c

現在、ローカル ブランチmasterbug-fix-abug-fix-b があります。Master ブランチのメンテナーは、私の変更をmasterにマージし、すでにマージしたすべてのブランチを削除します。

現在の状態は次のようになります。

ブランチ(ローカルおよびリモート)

  • マスター
  • バグ修正
  • バグ修正b
  • 起源/マスター
  • オリジン/バグ修正-c

ここで、リモート リポジトリに表示されなくなったブランチ (この場合はbug-fix-abug-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

おすすめ記事