LoginSignup
6
2

More than 5 years have passed since last update.

master にマージ済みのローカルブランチを一括削除する

Last updated at Posted at 2016-09-03

TL; DR

git fetch upstream
git branch --merged upstream/master | egrep -v '^\*' | perl -pe's//git branch -D/' | bash

upstream にマージされたブランチ一覧がこれで消えます。

前提とか

  1. GitHub に PR 出した
  2. 誰かがマージしてくれた。 (happy)
  3. リモートブランチを消した(Pattern A)、あるいは消し忘れた (Pattern B)

Pattern-A リモートブランチを消した場合 (よくあるパターン)

以下で一括削除できます

git fetch --prune

# リモートをフェッチして、リモートブランチがセットされているのに、そのブランチが削除されたブランチを消す

Pattern-B リモートブランチを消し忘れた場合

以下のコマンドで、upstream/master にマージ済みのブランチ一覧が取得できます

$ git branch --merged upstream/master
* master
  hotfix_A
  feature-X
  BTS-1234

厳密には、upstream/master の祖先になっているブランチの一覧です。
あとはなんでもお好みのツールで。

git branch --merged upstream/master | # upstream/master マージ済みブランチ取得
    egrep -v '^\*'                  | # 先頭が * で始まるのは、checkout 中のブランチなので省く
    perl -pe's//git branch -D/'     | # 各行の先頭に "git branch -D" 挿入
    bash                              # bash の標準入力に入れてシェル実行する(-c でも、`` で括っても OK)

1行で再掲

$ git branch --merged upstream/master | egrep -v '^\*' | perl -pe's//git branch -D/' | bash
6
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
6
2