1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカル環境に溜まった不要なブランチを一括で削除したい時の解決策

Posted at

はじめに

マージ済みブランチを削除せず溜まってしまっているエンジニア向けに、ローカル環境から一括で削除する方法をまとめます。

記事のとおりにコマンドを実行すれば、ローカル環境に存在するブランチのうちマージ済みのものだけを一括で削除できるはずです。

問題

ローカル環境にマージ済みのブランチがかなり溜まっていたため、削除して見通しをよくしたかったです。

1つずつgit branch -d branch-nameとすれば削除できますが手間なので、一括で削除できる方法を探していました。

解決策

結論として、次の流れでコマンドを実行すればマージ済みのブランチを一括で削除できます。

$ git switch develop  # ベースブランチへ移動
$ git branch --merged | grep -v "\*" | xargs git branch -d

コマンドの説明

  • git branch --merged: 現在のブランチにマージ済みのローカルブランチを一覧表示
  • grep -v "\*": 出力結果から現在のブランチ(*が付いているブランチ)を除外
  • xargs git branch -d: フィルタリングされたブランチを削除

注意点

  • 未マージのブランチを削除しない: -dオプションを付与してるため、未マージのブランチは削除されない
  • 現在のブランチを削除しない: grep -v "\*"で現在のブランチを除外している

未マージのブランチも含めて強制的に削除したい場合

マージされていないブランチも含めて強制的に削除したい場合は-Dオプションを付与します。

$ git branch --merged | grep -v "\*" | xargs git branch -D

ただし重要なブランチを誤って削除しないよう注意が必要です。

補足:xargsコマンドについて

xargsは前のコマンドの出力を引数として次のコマンドに渡すためのコマンドです。

使い方の例

以下の例はコマンドAの出力結果をコマンドBの引数として渡すことを意味しています。

$ コマンドA | xargs コマンドB

今回の例

git branch --mergedで得たマージ済みブランチから*が付いているブランチ以外を、xargsgit branch -dに渡して削除しています。

$ git switch develop  # ベースブランチへ移動
$ git branch --merged | grep -v "\*" | xargs git branch -d

おわりに

gitコマンドとgrepxargsを組み合わせることで、ローカルブランチの一括削除を効率的に行うことができました。

基本的なコマンドでも、組み合わせ次第で便利な操作が可能です。

今後もコマンドの活用方法を探求していきたいと思います。

1
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?