読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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