はじめに
SourceTreeでマージ済みのローカルブランチが邪魔なので一括削除したいことがある。
ものすごくある。
手順
# 指定したブランチ(※今回の場合develop)にマージ済み & myname/を含むブランチ一覧
git branch --merged develop | grep 'myname/' | grep -v '\*'
# 指定したブランチ(※今回の場合develop)にマージ済み & myname/を含むブランチを一括削除
git branch --merged develop | grep 'myname/' | grep -v '\*' | xargs git branch -d
# 現在のブランチ(HEAD)にマージ済み & myname/を含むブランチ一覧
git branch --merged | grep 'myname/' | grep -v '\*'
# 現在のブランチ(HEAD)にマージ済み & myname/を含むブランチを一括削除
git branch --merged | grep 'myname/' | grep -v '\*' | xargs git branch -d
git branch --merged BRANCHNAME
指定したブランチにすでにマージ済みのローカルブランチを一覧表示
BRANCHNAMEを省略した場合は現在のブランチ(HEAD)
が対象
grep 'myname/'
ブランチ名に「myname/」を含むものだけを抽出
今回はfeature/myname/task_12345
のように自分の名前が入っているブランチである前提
grep -v '\*'
現在チェックアウトしているブランチ(先頭に*が付く)を除外
誤って今いるブランチを削除しないための保険
xargs git branch -d
標準入力で渡ってきたブランチ名をまとめて一括削除
一覧表示のみしたい場合は不要