不要なブランチが増えてきたので、Gitでマージ済みのローカルブランチを削除したい。
解決策
以下のコマンドでマージ済みのローカルブランチを削除できる。
git checkout main
git fetch -p && git branch --merged | grep -v '*' | xargs git branch -d
解説
-
git checkout main
main
ブランチ以外のローカルブランチを削除するために、まずは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
の引数に指定して実行する。 これにより、各行に記載されたブランチが削除される。