マージ済みのローカルbranchを一括削除

だんだん溜まってくるローカルブランチが邪魔になってくることってありますよね

毎回やるたびに調べて『ほうほう…』ってなるのに、また忘れて・・・を繰り返しがちなのでまとめました

私もコマンドがまだまだ苦手なので(エンジニア10年目)、簡単に解説なんかもしながら…

こんなコマンドになりました

git branch --merged  | grep -v 'master' | grep -v 'develop' | xargs git branch -d

やっているのは、たった三つだけ

  • マージ済みのbranch一覧を出す
  • 削除したくないbranchをリストから除外
  • リストのbranchを消す

一見難しそうに見えますが、分解したら超簡単です

–margedでマージ済みのbranchを調べる

–mergedオプションは意味の通り、過去にマージしたbranch一覧を出してくれます。

git branch --merged

ここにはmasterブランチや、git-flow使っている場合developなんかも一覧にでてきます

grepで合致しない一覧を出す

例えばmasterとdevelopをマージ済みbranchとして表示したくない場合は、こんな感じで指定できます。

git branch --merged | grep -v 'master' | grep -v 'develop'

hotfixも除外してみたり(しなくてもよいんだけど)

git branch --merged | grep -v 'master' | grep -v 'develop' | grep -v 'hotfix*'

参考

http://linux.just4fun.biz/%E9%80%86%E5%BC%95%E3%81%8DUNIX%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/grep%E3%81%A7%E8%A4%87%E6%95%B0%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89%E3%82%92%E9%99%A4%E5%A4%96%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.html

リストアップされたブランチを削除する

xargsって最初分からずに使っていたんですが(危険!)、簡単に言うとリストを渡すコマンドです

あまりイメージがつかなかったんですが、ここの記事をみてすっと納得できました

https://hydrocul.github.io/wiki/commands/xargs.html

xargsでリストを渡して、branchの-dオプションで削除!

きっとこれで、すっきりするはずです

git branch --merged  | grep -v 'master' | grep -v 'develop' | xargs git branch -d

参考

http://www.backlog.jp/git-guide/reference/branch.html

思ったこと

コマンドを覚えたり、一括操作をし始めるとプレフィックス(頭とかおしりに付ける決まった文字)が大切だなって実感します

そして反省します・・・orz

参考にしたページ

こちらのページを参考にさせていただきました

3.3 Git のブランチ機能 - ブランチの管理

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)