1. ホーム
  2. git

[解決済み] 現在のブランチ以外のローカルブランチをすべて削除することはできますか?

2022-08-01 14:23:56

質問

私は、...の出力に表示されるすべてのブランチを削除したいです。

$ git branch

...ただし、現在のブランチを維持します。 一歩で . それは可能ですか? もし可能なら、どのように?

どのように解決するのですか?

pankijsさんの回答を元に、gitのエイリアスを2つ作りました。

[alias]
    # Delete all local branches but master and the current one, only if they are fully merged with master.
    br-delete-useless = "!f(){\
        git branch | grep -v "master" | grep -v ^* | xargs git branch -d;\
    }; f"
    # Delete all local branches but master and the current one.
    br-delete-useless-force = "!f(){\
        git branch | grep -v "master" | grep -v ^* | xargs git branch -D;\
    }; f"

で追加される ~/.gitconfig


また、@torek さんのご指摘のように

なお、小文字の -d は、完全にはマージされていないブランチを削除しないことに注意してください(ドキュメントを参照)。使用方法 -D を使うと、そのようなブランチを削除します。 たとえそれがコミットを失わせるものであっても。 を慎重に使ってください。 ブランチの reflog も削除してしまうので、通常の "recover from accidental deletion" は機能しません。

基本的に -force バージョンは、重要なものを失わないという 300% の確信がない場合は、決して使用しないでください。なぜなら、失われるのは 永遠に .