任意の複数ブランチを一括削除したい件
困ったこと
気づくと手元にブランチがたくさん存在した状態となり、一個ずつ git branch -d hoge
としていくのは手間だなぁと感じることが多々ありました。同僚に同じような悩みがないか聞いたところ、masterなど特定のブランチ以外を一括で削除するスクリプトを使うとのことでしたが、それだと作業中のブランチも削除されてしまうので自分の期待通りではありませんでした。
$ git branch
hoge
hoge1
* hoge10
hoge2
hoge3
hoge4
hoge5
hoge6
hoge7
hoge8
hoge9
master
やりたいこと
- 何かコマンドを叩く
- ブランチ一覧が表示される(絶対に削除しないブランチは事前にフィルターしておく
- ブランチ一覧上で任意のブランチ複数個を簡単に選択できる
- エンターキーを押したら任意のブランチが一括で削除される
解決方法
課題はブランチ一覧上で任意のブランチを複数個選択する方法だったが、 peco を使うことで簡単にできた。peco には複数行選択機能があったので、それによりブランチの複数選択ができた。あとはgitのブランチ削除コマンドに渡してあげれば解決。gitのalias設定をしておくことですぐに呼び出せるようにした。 select-delete-branch
は好みに設定してください。
[alias]
select-delete-branch = !git b -D $(git branch | grep -v '*' | grep -v master | sed 's/ //g' | peco)
実行例
$ git branch
aaa
bbb
ccc
ddd
eee
fff
* master
$ git select-delete-branch
# 以下が表示されるので Control + Space で複数選択をする
QUERY> IgnoreCase [6 (1/1)]
aaa
bbb
ccc
ddd
eee
fff
# エンターキーを押すと以下のように一括で削除される
Deleted branch aaa (was 3d9df20).
Deleted branch bbb (was 3d9df20).
Deleted branch ccc (was 3d9df20).
Deleted branch ddd (was 3d9df20).
Deleted branch eee (was 3d9df20).
Deleted branch fff (was 3d9df20)
めっちゃ便利〜!
もしControl + Space
が他でアプリで使用している場合は、peco のキーマップ設定を変更することも可能です。
まとめ
実は最初はシェルスクリプトで同じことをしていたのですが、既存ライブラリでもっと楽にできるのでは?と考えていたら、pecoでサクッとできた。peco, 便利ですね。
Author And Source
この問題について(任意の複数ブランチを一括削除したい件), 我々は、より多くの情報をここで見つけました https://qiita.com/hypermkt/items/ee8d516991ea0c00f347著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .