おそらくはそれさえも平凡な日々

Gitのマージ済みのリモートブランチをカッとなって一括で消す方法

% git branch -r --merged | grep -v origin/master | perl -pE 's!^\s*origin/!!' | xargs git push --delete origin

あとは、git fetch --pruneとかやれば、git branch -r もスッキリして良い。

--mergedorigin/masterとかが現れるので、grep -v origin/masterとかやって無理やり抜いてある。git flowとかでdevelopブランチとか作ってる場合はそれも抜いてやる必要ありそう。

その辺の--mergedの判定がよくわからない(どこかにマージ後にコミットが発生したブランチとかもリストされちゃうとか?)、うっかり思わぬブランチを消してしまうかもしれないので、とにかく「カッとなった」時に自己責任でオススメ。

あと、githubのhookとかをIRCに流す設定しておくと大変なことになる(なった)。とりあえずカッとなって120個くらいブランチ消したの所存。

もっといい方法あったら教えて下さい。

追記: git-prune-remote-branch ってのがありました

ブコメでnihenさんに教えてもらいました。

http://blog.kyanny.me/entry/2012/09/27/022430

さしみさんが作ってたわー。やってることだいたい同じだけど、git flowを考慮してmasterとdevelop抜いてあるのでちゃんとしてますね。

created at
last modified at

2013-10-14T18:44:08+0900

comments powered by Disqus