マージ済みのローカルブランチを一括削除する

マージ済みのローカルブランチを一括削除する

プログラミングをしていて、作業ごとにブランチを作成しているので、ローカルブランチが溜まりがちです。

ChatGPTに毎回コマンドを聞くのも申し訳ないので、操作をまとめておきます。

目次

マージ済みのブランチを確認する

この操作の肝になるのが、マージ済みのブランチを一覧表示することです。

$ git branch --merged

このコマンドではマージ済みのブランチを一覧表示できます。このコマンドでは現在のブランチも含まれており、現在のブランチを示す*がついています。

また、mainブランチも含まれている点に注意が必要です。

現在のブランチ、mainブランチを除く

現在のブランチを削除できないのでこれを除外します。また、mainブランチは削除されると困るのでこれも除外します。grep -vで除外できるのでこれを使って除外します。  

$ git branch --merged | grep -v "\*" | grep -v "main"

もし、mainブランチではなくmasterブランチであれば、

$ git branch --merged | grep -v "\*" | grep -v "master"

としてください。

マージ済みのブランチを削除する

マージ済みのブランチを削除するには、git branch -dを使用します。-Dを使用すると未マージのブランチを削除できてしまうので、-dを使う点に十分注意してください。

$ git branch -d <削除するブランチ名>

前述のマージ済みブランチのリストをgit branch -dに渡すにはxargsコマンドを使用します。

$ git branch --merged | grep -v "\*" | grep -v "main" | xargs -n 1 git branch -d

マージ済みのブランチは

$ git branch --merged
  bug/bad-request-when-exception-occurs
  bug/remove-pysqlite3-from-pyproject
  bug/update-readme-md
  doc/add-codacy-badge
  doc/update-doc-and-readme
  doc/update-document
  enhance/enhancing-the-way-router-is-set-up

のようにブランチ名だけがリストされ、このブランチ名をgit branch -dコマンドに渡せばいいので、-n 1(渡す標準入力は1つ)を指定しています。

まとめ

頻繁に使用するコマンドは忘れませんが、時々しか使わないコマンドは忘れがちです。ChatGPTなどに訪ねればすぐに答えを教えてくれるので、それほど困ることはありませんが、以下のようにコマンド化しておけばすぐに使えます。(コマンドを忘れるという可能性はありますが)

# Git Branch Clear
gbc() {
  git branch --merged | grep -v "\*" | grep -v "main" | xargs -n 1 git branch -d
}

ローカルブランチは容量を圧迫するような類いのものではありませんが、あまり溜まりすぎると探しにくくなったりするの、個人的には綺麗にしておきたいと思っています。

プルリクのマージ後に削除すればいいのですが、どうしても忘れてしまうので、思い立ったときに一括削除できるようにしておくくらいがちょうどいいと思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次