LoginSignup
4
1

More than 5 years have passed since last update.

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

Posted at
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ってついているものも残したかったという形。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1