2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

不要なローカルブランチを一括削除したい

Last updated at Posted at 2024-09-25

結論

git branch --format '%(refname:short)' | grep -vE "^(main|release|$(git branch --show-current))$" | xargs -n 1 git branch -D

このコマンドで任意のブランチとカレントブランチ以外を一括で削除できます。

溜まっていくローカルブランチ

レビューしているとローカルにブランチが溜まっていきますよね?
私は溜まっていました。。

定期的にgit branch -dで一つずつ削除していたんですが、たまにマージされていないとかでエラーが発生して地味にストレス。。。

しかしまとめて消すのはmainとかカレントブランチとか気にしないといけない。
そんな葛藤を一発で解決するコマンドです!

解説

  1. ブランチ名のリストアップ
    git branch --format '%(refname:short)'
    ローカルリポジトリ内の全てのブランチ名を短い形式(ブランチ名のみ)で取得します。

  2. 特定のブランチを除外
    grep -vE "^(main|release|$(git branch --show-current))$"
    特定のブランチ(main,release,現在のブランチ)を除外するために、正規表現を使用してフィルタリングします。
    -v:一致する行を除外します
    -E:拡張正規表現を使用します
    '^(main|release|$(git branch --show-current))$':カッコ内のブランチ名に一致する行を除外します。$(git branch --show-current)は現在のブランチを取得するサブコマンドです。
    除外するブランチは自由に変更してください。

  3. ブランチの一括削除
    xargs -n 1 git branch -D
    フィルタリングされたブランチ名を1つずつgit branch -Dコマンドに渡して、削除を実行します。
    xargs:前のコマンドの出力を引数として受け取ります。
    -n 1:1回に1つの引数を渡します。
    git branch -D:指定されたブランチを強制的に削除します。強制でない通常の削除の場合は-dを指定します。

それらをパイプ('|')で繋ぎます。

これであなたも快適なレビューライフを!!!

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?