はじめに
GitFlowなどのブランチモデルを採用して開発していると、プルリクエスト(PR)の確認やマージが終わった後の feature ブランチや release ブランチがローカルに溜まってしまいがちです。
「たくさんレビューをしていたら、ローカル環境でブランチが増えてしまった…」
「ブランチが多すぎて、今どの作業をしているか見失う…」
そんな時に役立つ、特定の接頭辞を持つブランチを一括で整理するコマンドを紹介します。
1. featureブランチを一括削除する
作業が終わった feature/ ブランチをまとめて削除します。
git branch | grep "feature/*" | xargs -L 1 git branch -d
2. releaseブランチを一括削除する
リリース完了後、不要になった release/ ブランチを整理します。
git branch | grep "release/*" | xargs -L 1 git branch -d
解説:何をしているのか?
このコマンドは3つの命令をパイプ(|)でつないでいます。
-
git branch現在のローカルブランチ一覧を表示します -
grep "feature/*"一覧の中から、指定した文字列(例:feature/)を含む行だけを抽出します -
xargs -L 1 git branch -d抽出されたブランチ名を1つずつ git branch -d の引数として渡し、削除を実行します
Tips: 安全に削除するために
-d と -D の使い分け
紹介したコマンドでは -d(小文字)を使用しています。
これは 「マージ済みのブランチのみ削除する」 という安全策です。
もし未マージの作業が残っている場合はエラーを出して止まってくれます。
もし、強制的に削除したい(マージ状況を問わない)場合は、自己責任で -D(大文字)に変更してください。
# 強制削除(注意!)
git branch | grep "feature/*" | xargs -L 1 git branch -D
現在のブランチを除外する
もし、現在チェックアウトしているブランチも grep に引っかかってしまう可能性がある場合は、以下のように grep -v で除外を追加するとより安全です。
git branch | grep "feature/*" | grep -v "\*" | xargs -L 1 git branch -d
※ * が付いている(現在選択中の)ブランチを除外します。
おわりに
ブランチの整理は、開発のリズムを整える大事な作業です。
「作業が終わったら消す」を習慣化して、クリーンな開発環境を保ちましょう!