1. ホーム
  2. git

[解決済み] リモートにないトラッキングブランチを削除

2022-03-16 02:41:50

質問

リモートに相当するものが存在しなくなったトラッキングブランチをすべて削除する簡単な方法はありますか?

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

  • マスター
  • オリジン/マスター
  • オリジン/バグフィックス-a
  • オリジン/バグフィックス-b
  • オリジン/バグフィックス-c

ローカルでは、masterブランチしかありません。今、私が作業しなければならないのは バグフィックス-a そこで、それをチェックアウトして作業を行い、変更をリモートにプッシュします。次に私は同じことを バグフィックスB .

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

  • マスター
  • バグフィックス-a
  • バグフィックス-b
  • オリジン/マスター
  • オリジン/バグフィックス-a
  • オリジン/バグフィックス-b
  • オリジン/バグフィックス-c

これでローカルブランチができました マスター , バグフィクスア , バグフィックス-b . Master ブランチのメンテナは、私の変更を マスター を実行し、彼が既にマージしたすべてのブランチを削除してください。

というわけで、現在の状態は以下の通りです。

ブランチ(ローカルとリモート)

  • マスター
  • バグフィックス-a
  • バグフィックス-b
  • オリジン/マスター
  • オリジン/バグフィックス-c

ここで、ブランチを削除するコマンドを呼び出したいと思います(この場合 バグフィクスア , バグフィックス-b ) があり、これらはもはやリモートリポジトリでは表現されません。

それは、既存のコマンドのようなものでしょう git remote prune origin のようなものですが、もっと git local prune origin .

解決方法は?

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