git で指定したブランチ以外を削除する(大量のローカルブランチを特定の物以外削除)
git で指定したブランチ以外を削除する(大量のローカルブランチを特定の物以外削除):
なんでこんなんが必要になったかというと、改めて git branch -a とかやったらローカルに大量のブランチがあって、しかもマージが終わってたりするせいで多分二度と使わぬやつが大量だったので綺麗にしたくなった次第です。
RipGrep必須。
オプションの「-v」がinvert match。excludeと同じ意味。除外する。hogehoge以外。
上記だとmasterとremotesに一致したブランチ以外を
RipGrepは
hogehogeはもちろん、hogehogehogeやaaaahogehoge、hogehogexxxなども除外対象、つまり部分一致でやってくれます。
重要なのは殺しすぎないということ。大体8割〜9割ぐらい削除できるぜコマンドになるのでうっかり事故は減ります(削除コマンドほど大は小を兼ねると大変な事故になるんで、できるだけ殺さないのが良いですね)。
最後に xargs で実行するだけ。
RipGrepのオプション次第で反転ももちろん可能です。
実際に使ったコマンドはこっちです。
僕らはstagingブランチで作業したりここをベースに別ブランチを切ってます。masterをリリースブランチとして運用していますのでstagingってついているものも残したかったという形。
git branch | rg -v 'master'| rg -v 'remotes'| xargs git branch -D
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ってついているものも残したかったという形。
コメント
コメントを投稿