Gitで不要なマージ済みブランチを効率的に整理する方法

2025/02/04に公開

Gitでは、一度マージされたブランチが自動的に消えるわけではありません。プロジェクトが進むにつれて、不要なブランチが蓄積し、リポジトリ内がごちゃごちゃしてしまうこともしばしば。そこで今回は、マージ済みブランチの一覧確認から一括削除、さらにはGitエイリアスを使った自動化まで、手軽にクリーンアップする方法をご紹介します。


1. はじめに

Gitを使っていると、作業ブランチを作成してはマージするという流れを繰り返すため、プロジェクト内に使い終わったブランチがどんどん残ってしまいます。
「ブランチが多すぎる!」と感じたら、定期的に不要なマージ済みブランチを削除して、リポジトリを整理しましょう。


2. マージ済みブランチの確認

まずは、現在のブランチに既にマージされているブランチ一覧を表示して、どのブランチが削除可能か確認します。
以下のコマンドを実行してください。

git branch --merged

このコマンドは、現在チェックアウトしているブランチに対して、マージ済みのブランチをリストアップします。
ただし、現在作業中のブランチは先頭に「*」が付いて表示されるので、削除対象から除外する必要があります。


3. マージ済みブランチの一括削除

不要なブランチを手作業で削除するのは面倒です。そこで、パイプラインを使って自動で一括削除する方法を紹介します。
たとえば、maindevelop などの主要ブランチは残しておきたい場合、以下のようにフィルタリングします。

git branch --merged | grep -Ev '^\*|main|develop' | xargs -r git branch -d

コマンド解説

  • git branch --merged
    現在のブランチにマージ済みのブランチを一覧表示します。

  • grep -Ev '^\*|main|develop'
    正規表現で、先頭に「*」がある行(現在のブランチ)と、maindevelop を除外します。
    ※プロジェクトに合わせて、除外したいブランチ名は適宜変更してください。

  • xargs -r git branch -d
    除外フィルタを通過した各ブランチに対して、git branch -d を実行し、削除します。
    -r オプションを付けることで、削除対象が存在しない場合にもエラーを回避できます。


4. Gitエイリアスを活用して自動化

毎回長いコマンドを入力するのは手間です。そこで、Gitのエイリアス機能を利用して、定型コマンドを簡略化しましょう。
たとえば、以下のように .gitconfig に設定することで、簡単なコマンドで一括削除が実行できるようになります。

[alias]
    prune-merged = "!f(){ \
      git checkout $1 && \
      git branch --merged | grep -Ev '^\\*|main|release' | xargs -r git branch -d; \
    }; f"

エイリアスの使い方

上記の例では、prune-merged というエイリアスを作成しています。
利用する際は、削除前に安全なブランチ(ここでは main など)にチェックアウトしてから実行します。

git prune-merged main

このコマンドは、まず main ブランチに切り替え、mainrelease などを除外したマージ済みブランチを自動で削除します。
※除外するブランチは、自分のプロジェクトに合わせて調整してください。


5. カスタマイズと応用例

プロジェクトによっては、さらに除外したいブランチ名があるかもしれません。
例えば、productionstaging などを除外したい場合は、正規表現部分を以下のように変更します。

git branch --merged | grep -Ev '^\*|main|develop|production|staging' | xargs -r git branch -d

また、エイリアス内でも同様に設定可能です。

[alias]
    clean-merged = "!f(){ \
      git checkout $1 && \
      git branch --merged | grep -Ev '^\\*|main|develop|production|staging' | xargs -r git branch -d; \
    }; f"

このように、自分の運用ルールに合わせて除外リストをカスタマイズすることで、より安全にブランチのクリーンアップが行えます。


6. リモートブランチの整理

ローカルブランチだけでなく、リモート追跡ブランチが残っている場合もあります。
リモート側の不要なブランチ情報を削除するには、以下のコマンドを使用します。

git fetch --prune

このコマンドは、リモートリポジトリで削除されたブランチに対応するローカルの追跡情報をクリーンアップします。
定期的に実行することで、リモートの状態とローカルの情報が一致し、混乱を防ぐことができます。


7. まとめ

不要なマージ済みブランチの放置は、リポジトリの管理を複雑にし、誤操作のリスクも高めます。
今回紹介した方法を活用すれば、以下のメリットが得られます。

  • 視認性の向上
    必要なブランチのみが残るため、リポジトリの状況が把握しやすくなります。

  • 作業効率の向上
    エイリアスを設定することで、毎回手動でコマンドを入力する手間が省けます。

  • 安全な運用
    除外リストを柔軟にカスタマイズできるため、重要なブランチを誤って削除するリスクが低減します。

ぜひ、今回ご紹介した方法をプロジェクトに取り入れて、日常のGit管理をスッキリと整理してみてください。


このように、Gitの基本コマンドとエイリアス設定を組み合わせることで、ブランチ管理の効率を大幅に向上させることができます。
さらに応用例や自動化スクリプトを追求することで、より快適な開発環境を実現しましょう。

Discussion