すでにマージ済みのブランチをまとめて削除するには以下のようにする (master ブランチを checkout していると仮定する)
$ git branch --merged | grep -v '*' | xargs -I % git branch -d %
Deleted branch foo (was ce1b0d5).
Deleted branch bar (was 7623b2b).
Deleted branch baz (was d4c396d).
長いのでエイリアスをはるとよい。シェルの特殊文字 *
のエスケープが必要なことに注意。
$ git config --global alias.delete-merged-branches '!git branch --merged | grep -v \* | xargs -I % git branch -d %'
以下のように設定されていれば、以降は git delete-merged-branches
で実行できる。
$ git config --list | grep alias.delete-merged-branches
alias.delete-merged-branches=!git branch --merged | grep -v \* | xargs -I % git branch -d %
~/.gitconfig
[alias]
delete-merged-branches = !git branch --merged | grep -v \\* | xargs -I % git branch -d %
2015/03/18 改訂
-
git-flow ライクなブランチ運用ルールを採用している場合に
master
ブランチまで消してしまってびっくりする問題を修正 - 以下のコードスニペットをシェルスクリプトにしたものを GitHub で公開
git branch --merged | grep -vE '^\*|master$|develop$' | xargs -I % git branch -d %
自分は以下のようなエイリアスを作って git fetch
や git pull
したとき同時に実行されるようにしている(シェルスクリプト git-delete-merged-branches
をパスの通った場所にインストールしておくこと)
~/.gitconfig
[alias]
fp = !git fetch -p && git-delete-merged-branches
pp = !git pull -p && git-delete-merged-branches