1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

任意の複数ブランチを一括削除したい件

Posted at

困ったこと

気づくと手元にブランチがたくさん存在した状態となり、一個ずつ git branch -d hoge としていくのは手間だなぁと感じることが多々ありました。同僚に同じような悩みがないか聞いたところ、masterなど特定のブランチ以外を一括で削除するスクリプトを使うとのことでしたが、それだと作業中のブランチも削除されてしまうので自分の期待通りではありませんでした。

$ git branch
  hoge
  hoge1
* hoge10
  hoge2
  hoge3
  hoge4
  hoge5
  hoge6
  hoge7
  hoge8
  hoge9
  master

やりたいこと

  1. 何かコマンドを叩く
  2. ブランチ一覧が表示される(絶対に削除しないブランチは事前にフィルターしておく
  3. ブランチ一覧上で任意のブランチ複数個を簡単に選択できる
  4. エンターキーを押したら任意のブランチが一括で削除される
  5. :tada:

解決方法

課題はブランチ一覧上で任意のブランチを複数個選択する方法だったが、 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, 便利ですね。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?