マージ済みブランチの一覧

現在のブランチにマージ済みのブランチ

以下のようなコミットツリーでmainブランチをcheckoutしている状態とする。

*   1733330 ← main(現在checkoutしているブランチ)
|\
| * faa9689  ← branch2
* | db084b3
|\|
| * a493c0a ← branch1
|/
* 6221a00 init

現在のブランチ(mainブランチ)にマージ済みのブランチ一覧を表示するには--mergedオプションを使って以下のように実行する。

$ git branch --merged
  branch1
  branch2
* main

現在のブランチ(mainブランチ)にマージ済みのブランチbranch1branch2(とmain自身)が表示される。

指定したブランチにマージ済みのブランチ

以下のようなコミットツリーで、現在branch3をcheckoutしている状態とする。

* ac01cdd HEAD ← branch3(現在checkoutしているブランチ)
*   1733330 ← main
|\
| * faa9689  ← branch2
* | db084b3
|\|
| * a493c0a ← branch1
|/
* 6221a00 init

branch3をcheckoutしている状態(mainブランチをcheckoutしている状態)でmainブランチにマージ済みのブランチ一覧を表示するには --mergedオプションにブランチ名を指定して以下のように実行する。

$ git branch --merged=main
  branch1
  branch2
  main

mainブランチにマージされているbranch1branch2(とmain自身)が表示される。

マージ済みブランチの一括削除

mainブランチにマージ済みのブランチはほとんどの場合不要なので一括で削除したい。

$ git branch --merged=main | grep -v main | grep -v '*' | xargs git branch -d
Deleted branch branch1 (was a493c0a).
Deleted branch branch2 (was faa9689).

上記コマンドは以下の流れで一括削除する。

  1. git branch --merged=mainmainブランチにマージ済みのブランチ一覧を表示する
  2. grep -v mainmainブランチを除外する
  3. mainブランチにマージ済みのどれかのブランチを現在checkoutしている場合は削除できないのでgrep -v '*'で現在のブランチを除外する
  4. xargs git branch -dで渡されたブランチ一覧を削除する