Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?

マージ済みのリモートブランチを全て削除

git branch -r --merged master | grep -v -e master -e develop | sed -e 's% *origin/%%' | xargs -I% git push --delete origin %
  1. remote の master に merge済み の branch をすべて表示して
  2. master と develop は消えてほしくないので除外して
  3. origin/ を削除して
  4. xargs (-I% % で ブランチ名を渡しつつ、全て削除する)

マージ済みのローカルブランチを全て削除

$ git branch --merged master | grep -vE '^\*|master$|develop$' | xargs -I % git branch -d %
  1. local の master に merge済み の branch をすべて表示して
  2. master と develop は消えてほしくないので除外して
  3. xargs (-I% % で ブランチ名を渡しつつ、全て削除する)
@gen0083

This comment has been minimized.

Copy link

gen0083 commented Jun 2, 2019

便利なコマンドをありがとうございます、大変助かりました。

うまく動かない場合があったのでご報告させていただきます。
例えばfix_masterという名前のブランチを作てマージして不要になったとしても、上記のコマンドでは消すことができません。
末尾がmasterとなっているので削除対象から外れてしまいます。

grepの部分の正規表現をgrep -vE '^\*|\<master\>|\<develop\>'とするとうまく動いたのでご報告します。
(^master$だと、git branchが先頭に空白を入れた状態でブランチ名を出力するのでうまく動きません)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.