kanta's spike

不要なブランチが増えてきたので、Gitでマージ済みのローカルブランチを削除したい。

解決策

以下のコマンドでマージ済みのローカルブランチを削除できる。

git checkout main
git fetch -p && git branch --merged | grep -v '*' | xargs git branch -d

解説

  1. git checkout main

    mainブランチ以外のローカルブランチを削除するために、まずはmainブランチに切り替える。

  2. git fetch -p

    -p--pruneのショート版で、*prune(取り除く)*してくれる。git fetch -pしないと、ローカルリポジトリに取り込んだリモートブランチが残りつづけてしまう。

  3. git branch --merged

    マージ済みのブランチを一覧表示する。

  4. grep -v '*'

    ブランチ一覧から*を含む行を除外する。ブランチ一覧では、現在のブランチ名(今回はmainブランチ)の先頭に*が付く。 mainブランチが削除対象にならないように除外する。

  5. xargs git branch -d

    ブランチ一覧(mainは除外)の各行をgit branch -d の引数に指定して実行する。 これにより、各行に記載されたブランチが削除される。

参考

作成日: 2023/06/22