🧹
【Git】merge済branchをコマンドで一括削除する
本記事の内容
ローカルリポジトリ のmerge済のbranchをコマンドで一括削除する方法について
散らかったbranch
次のような状況です。
ローカルリポジトリにmerge済のbranchが散らかってしまっています。
mergeして不要になった不要なbranchを1つずつ削除するのもいいのですが、一括削除したい。
merge済のブランチを一括削除する。(ローカルリポジトリ)
ブランチのmerge状況を確認する
現在のbranchに対してmerge済のブランチを下記コマンドで確認し、
削除したいbranch / 削除せず残したいbranchを確認します。
git branch --merged
merge済のbranchを一括削除
下記コマンドでmerge済のbranchを一括削除します。
git branch --merged | grep -v '(削除せず残したいbranch)' | xargs git branch -d
例えばmainのみを残したい場合は下記のコマンドになります。
git branch --merged | grep -v 'main' | xargs git branch -d
mergeしていないブランチのうち不要branchを一括削除する(ローカルリポジトリ)
mergeしていないブランチに対して一括削除をしたい場合はgit branch -merged
を
git branch --no-merged
に置き換えます。
ブランチのmerge状況を確認する(mergeされていないブランチ)
git branch --no-merged
mergeされていないbranchの一括削除
git branch --no-merged | grep -v '(削除せず残したいbranch)' | xargs git branch -d
例えばmainのみを残したい場合は下記のコマンドになります。
git branch --no-merged | grep -v 'main' | xargs git branch -d
Tips(コマンドの連結について)
git branch --no-merged | grep -v 'main' | xargs git branch -d
このコマンドでコマンドの連結を使っています。
git branch --merged
- 現在のブランチにマージ済みのローカルブランチ一覧を取得。
|(パイプ)
-
| (パイプ)
で左側のコマンドの出力結果を右側のコマンドの入力として渡す。
grep -v 'main'
-
grep
:テキストの中から特定のパターン(文字列)を検索。-
-v
オプションを付けると、指定した文字列(この場合は'main'
)を含まない行だけを表示。
-
git branch --merged | grep -v 'main'
- マージ済みのブランチの中から「
main
」という名前のブランチを除外。
| xargs git branch -d
-
xargs
で、前のコマンドの出力を引数として次のコマンドに渡す。 -
git branch -d
にマージ済みのブランチ名が順に渡し、指定されたブランチを削除。
Discussion