Help us understand the problem. What is going on with this article?

git で指定したブランチ以外を削除する(大量のローカルブランチを特定の物以外削除)

More than 1 year has passed since last update.
git branch | rg -v 'master'| rg -v 'remotes'| xargs git branch -D

なんでこんなんが必要になったかというと、改めて git branch -a とかやったらローカルに大量のブランチがあって、しかもマージが終わってたりするせいで多分二度と使わぬやつが大量だったので綺麗にしたくなった次第です。
RipGrep必須。

rg -v 'hogehoge'
オプションの「-v」がinvert match。excludeと同じ意味。除外する。hogehoge以外。
上記だとmasterとremotesに一致したブランチ以外git branch -Dしましょうというコマンド。

RipGrepはrg -v 'hogehoge'としたときに
hogehogeはもちろん、hogehogehogeやaaaahogehoge、hogehogexxxなども除外対象、つまり部分一致でやってくれます。
重要なのは殺しすぎないということ。大体8割〜9割ぐらい削除できるぜコマンドになるのでうっかり事故は減ります(削除コマンドほど大は小を兼ねると大変な事故になるんで、できるだけ殺さないのが良いですね)。

最後に xargs で実行するだけ。
RipGrepのオプション次第で反転ももちろん可能です。

git branch | rg -v 'staging' | rg -v 'master' | rg -v 'remotes'| xargs git branch -D

実際に使ったコマンドはこっちです。
僕らはstagingブランチで作業したりここをベースに別ブランチを切ってます。masterをリリースブランチとして運用していますのでstagingってついているものも残したかったという形。

favy
デジタルマーケティングのスペシャリストと飲食業界出身の食のスペシャリストでチームは構成されていて、飲食市場に特化したマーケティング支援を軸に「飲食店がかんたんに潰れない世界を創る」を真剣に実現するためにチャレンジしています。
http://www.favy.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away