🧹

【Git】merge済branchをコマンドで一括削除する

2024/11/05に公開

本記事の内容

ローカルリポジトリ のmerge済のbranchをコマンドで一括削除する方法について

散らかったbranch

次のような状況です。

ローカルリポジトリにmerge済のbranchが散らかってしまっています。

mergeして不要になった不要なbranchを1つずつ削除するのもいいのですが、一括削除したい。

merge済のブランチを一括削除する。(ローカルリポジトリ)

ブランチのmerge状況を確認する

現在のbranchに対してmerge済のブランチを下記コマンドで確認し、
削除したいbranch / 削除せず残したいbranchを確認します。

git branch --merged

merge済のbranchを一括削除

下記コマンドでmerge済のbranchを一括削除します。

git branch --merged | grep -v '(削除せず残したいbranch)' | xargs git branch -d

例えばmainのみを残したい場合は下記のコマンドになります。

git branch --merged | grep -v 'main' | xargs git branch -d

mergeしていないブランチのうち不要branchを一括削除する(ローカルリポジトリ)

mergeしていないブランチに対して一括削除をしたい場合はgit branch -merged
git branch --no-merged に置き換えます。

ブランチのmerge状況を確認する(mergeされていないブランチ)

git branch --no-merged

mergeされていないbranchの一括削除

git branch --no-merged | grep -v '(削除せず残したいbranch)' | xargs git branch -d

例えばmainのみを残したい場合は下記のコマンドになります。

git branch --no-merged | grep -v 'main' | xargs git branch -d

Tips(コマンドの連結について)

git branch --no-merged | grep -v 'main' | xargs git branch -d

このコマンドでコマンドの連結を使っています。

git branch --merged

  • 現在のブランチにマージ済みのローカルブランチ一覧を取得。

|(パイプ)

  • | (パイプ)で左側のコマンドの出力結果を右側のコマンドの入力として渡す。

grep -v 'main'

  • grep :テキストの中から特定のパターン(文字列)を検索。
    • -v オプションを付けると、指定した文字列(この場合は 'main')を含まない行だけを表示。

git branch --merged | grep -v 'main'

  • マージ済みのブランチの中から「main」という名前のブランチを除外。

| xargs git branch -d

  • xargs で、前のコマンドの出力を引数として次のコマンドに渡す。
  • git branch -d にマージ済みのブランチ名が順に渡し、指定されたブランチを削除。
GitHubで編集を提案

Discussion