不要なブランチが増えてきたので、Gitでマージ済みのローカルブランチを削除したい。
解決策
以下のコマンドでマージ済みのローカルブランチを削除できる。
git checkout main
git fetch -p && git branch --merged | grep -v '*' | xargs git branch -d
解説
-
git checkout mainmainブランチ以外のローカルブランチを削除するために、まずはmainブランチに切り替える。 -
git fetch -p-pは--pruneのショート版で、*prune(取り除く)*してくれる。git fetch -pしないと、ローカルリポジトリに取り込んだリモートブランチが残りつづけてしまう。 -
git branch --mergedマージ済みのブランチを一覧表示する。
-
grep -v '*'ブランチ一覧から
*を含む行を除外する。ブランチ一覧では、現在のブランチ名(今回はmainブランチ)の先頭に*が付く。mainブランチが削除対象にならないように除外する。 -
xargs git branch -dブランチ一覧(
mainは除外)の各行をgit branch -dの引数に指定して実行する。 これにより、各行に記載されたブランチが削除される。