git で main と develop 以外のブランチを一括削除するワンライナーのコマンド

git-delete-branches

はじめに

Git を使ってチーム開発をしていると手元のブランチが増えすぎて削除が面倒という人いないでしょうか。
そんな時に使えるワンライナーの便利なコマンドを紹介します。

結論

状況に合わせて以下のコマンドをお使いください。

main ブランチ以外を削除したい

git branch | grep -v main | xargs git branch -D

main と develop ブランチ以外を削除したい

grep では正規表現を利用できるため、以下のように複数文字列を OR で指定することもできます。
git branch | grep -v "main\|develop" | xargs git branch -D

main と feature ブランチ以外を削除したい

GitHub Flow で重宝するコマンドです。
git branch | grep -v "main\|feature" | xargs git branch -D

コマンドの解説

これらは3つの処理をパイプライン | としています。
git branch でブランチの一覧を表示します。
❯ git branch develop hotfix/blog * main
つぎに、grep -v で(正規表現で)指定した文字列以外を抽出します。
❯ git branch | grep -v main develop hotfix/blog
そして、これらを引数 xargs として git branch -D でブランチを削除するというわけです。
git branch | grep -v main | xargs git branch -D

おわりに

grep -v正規表現で書くことができ、厳密には maindevelop という文字列を含まないブランチを削除するワンライナーのコマンドです。
そのため、develop-blog といった develop を含む文字列は削除されません。 この辺りは正規表現を勉強してカスタマイズできると良いですね。
株式会社キカガク 代表取締役会長
吉崎 亮介
twitter: @yoshizaki_91