下記コマンドで一括削除可能
git checkout master && git branch --merged | grep <検索キーワード> | xargs git branch -D
前提
master
・マスター
は自社ないしご自分の状況に応じて、適宜読み替えてください。
git branch --merged
便利なオプション --merged と --no-merged を使うと、この一覧を絞り込んで、現在作業中のブランチにマージ済みのもの (あるいはそうでないもの) だけを表示することができます。 現在作業中のブランチにマージ済みのブランチを調べるには git branch --merged を実行します。
git branchは特に何もオプションを指定しないとローカルブランチの一覧を表示する。
今回は「不要なブランチ」を「一括削除」したいので、まずは不要なブランチをうまいこと取りたい。
ここでは「不要なブランチ」 = 「マスターにマージ済みのブランチ」とするので、--merged
オプションで十分。
なお、上記引用文の通り、git branch --merged
は現在作業中のブランチにマージ済みのものを表示するため、このコマンドをマスター以外のブランチで実行すると、そのブランチにマージ済みのものが表示されるため、今回の目的にそぐわない。
そのため、必ずgit checkout master
してからgit branch --merged
する。
grep
git branch --merged
では現在のブランチも取得される。
ブランチ削除コマンドでは「今いるブランチ (= 上記の前提だとmaster)」は削除できないため問題ないっちゃ無いが、そもそも削除の対象に挙げてしまうのが気持ち悪い。
あと、マージ済みのブランチでも消したくないものが人によってはあるかもしれない。
ので、grep
コマンドで絞り込む。
これは別に他のコマンドやら正規表現やらを使っても良いです。
xargs git branch -D
grepで取得できたブランチ一覧を引数にして、git branch -D
= ブランチ削除コマンドを実行する