LoginSignup
5
2

More than 3 years have passed since last update.

マスターにマージ済みのgit ブランチを一括削除する | Delete all master-merged git branches

Posted at

下記コマンドで一括削除可能

git checkout master && git branch --merged | grep <検索キーワード> | xargs git branch -D

前提

masterマスターは自社ないしご自分の状況に応じて、適宜読み替えてください。

git branch --merged

doc

便利なオプション --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 = ブランチ削除コマンドを実行する

結果

スクリーンショット 2020-03-03 11.17.53.png

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2