🗑️

ローカル環境にブランチのゴミが溜まっていないか?

2024/03/11に公開

リモートでプルリクのレビューやらなにやらで無事にマージして一段落。さて、次のタスクは…。

の連続でローカルブランチの削除を忘れてしまう人(主に私)のために、マージ済みのローカルブランチを一括削除するコマンドをここに刻んでおきます。

コマンド

コマンドは以下。

git branch --merged main | egrep -v "(^\*|main)" | xargs git branch -d

このコマンドを実行することで、現在チェックアウトしているブランチとメイン以外のマージ済みブランチを削除することができます。

やっていること

このコマンドは3つのコマンドをパイプ(|)でつないでいます。以下にそれぞれのコマンドが何をしているかざっくりと説明します。

ひとつめ:

git branch --merged main

メインブランチにマージ済みのブランチ一覧を抽出します。

ふたつめ:

egrep -v "(^\*|main)"

正規表現で*(現在のブランチ)とmainブランチをマッチさせ、-vオプションでそれら以外のブランチのみを残します。
他にも'develop'など、削除したくないブランチがある場合は正規表現の中に追加します。
(例:"(^\*|main|develop)"

みっつめ:

xargs git branch -d

受け取ったブランチのリストを削除します。xargsは「前のコマンドの結果を入力として受け取りますよ」のコマンド。そしてそれらに対してgitの削除コマンドを実行するということです。

ちなみに今回は削除コマンドに-dと指定していますが、マージしていないブランチも強制的に一括削除したい場合はこれを-DとすればOK。

Discussion