マージ済みブランチの一覧
現在のブランチにマージ済みのブランチ
以下のようなコミットツリーでmainブランチをcheckoutしている状態とする。
* 1733330 ← main(現在checkoutしているブランチ)
|\
| * faa9689 ← branch2
* | db084b3
|\|
| * a493c0a ← branch1
|/
* 6221a00 init
現在のブランチ(mainブランチ)にマージ済みのブランチ一覧を表示するには--mergedオプションを使って以下のように実行する。
$ git branch --merged
branch1
branch2
* main
現在のブランチ(mainブランチ)にマージ済みのブランチbranch1、branch2(と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ブランチにマージされているbranch1、branch2(と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).
上記コマンドは以下の流れで一括削除する。
git branch --merged=mainでmainブランチにマージ済みのブランチ一覧を表示するgrep -v mainでmainブランチを除外するmainブランチにマージ済みのどれかのブランチを現在checkoutしている場合は削除できないのでgrep -v '*'で現在のブランチを除外するxargs git branch -dで渡されたブランチ一覧を削除する
\第一線のプログラマーの行動原理を学べる!/
