Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Bashスクリプトを使って溜まりに溜まったローカルの不要branchを消す

リモート開発をやっていると、不要ブランチが出て来ます。
こまめに消していれば良いのでしょうが、修羅場ではそうも言っていられません。
と、いうわけで、今回の記事では不要ブランチを綺麗にするbashスクリプトを紹介します。

$ for var in `git branch | grep -v "develop\|master"`; do git branch -d ${var}; done; git checkout master
Deleted branch f/click2next (was 6b1d034).
error: The branch 'f/c' is not fully merged.
If you are sure you want to delete it, run 'git branch -D f/c'.
Deleted branch f/a (was xxxxxxx).
Deleted branch f/b (was xxxxxxx).
Already on 'develop'

全てが終わった場合、明示的にmasterブランチに戻るようにしています。
ここはお好みでどうぞ

細かいところ

grep

否定論理"-v"

"-v"は否定論理です。
一致したものを除外します。
今回はmasterとdevelopを排除しています。
既存ブランチに含まれているとアレですが
...そこは契約による命名で何とかなります。

ORとAND

今回のようにOR条件を指定する場合は条件文中で"\|"、
ANDはパイプ並列にて対処可能です。

git

"-d"は未マージのものを無視してくれる削除オプション

"-d"なら、マージしていないものは除外してくれます。

(2014/07/04)追記

gitの標準コマンドfor-each-refを活用したバージョンも書きました。
こっちだと指定日付以降を消す事が出来たり...とやや使い勝手が良くなっています。
指定日以前の不要ブランチをまとめて消す - Bye Bye Moore