トラブルシューティング

不要になったブランチを整理する

マージ済みのローカルブランチやリモート追跡ブランチを安全に削除する方法

不要になったブランチを整理する diagram

マージ済みのローカルブランチを削除する

feature ブランチが main にマージされたら、もうそのブランチは不要です。

git branch -d で安全に削除できます。

-d はマージ済みのブランチだけを削除するので、まだマージしていないブランチをうっかり消す心配はありません。

bash
# マージ済みのブランチを削除
git branch -d feature/login

# マージ済みのブランチを一覧表示
git branch --merged main

# main 以外のマージ済みブランチをまとめて削除
git branch --merged main | grep -v "main" | xargs git branch -d

未マージのブランチを強制削除する

試作やボツになったブランチなど、マージせず捨てたいブランチは -D(大文字)で強制削除できます。

bash
# 未マージでも強制削除
git branch -D feature/experiment

リモートで削除されたブランチをローカルから消す

GitHub 上で Pull Request をマージした後、リモートのブランチは削除されることが多いですが、ローカルには origin/feature/xxx という追跡ブランチが残り続けます。

git fetch --prune でリモートに存在しないブランチの追跡情報を自動的に削除できます。

bash
# リモートに存在しない追跡ブランチを削除
git fetch --prune

# 同じ効果(明示的に prune だけ実行)
git remote prune origin

# 常に prune するように設定
git config --global fetch.prune true

リモートのブランチを削除する

ローカルからリモートのブランチを直接削除することもできます。

GitHub の UI で削除する代わりに、コマンドラインから操作したい場合に使います。

bash
# リモートのブランチを削除
git push origin --delete feature/login

注意点

  • -d-D を間違えない

    -d はマージ済みのブランチだけを削除します。未マージのブランチを消そうとするとエラーになるので安全です。-D は確認なしで強制削除するので、本当に不要か確認してから使いましょう。

  • maindevelop を削除しない

    まとめて削除する場合は grep -v で保護対象のブランチを除外しましょう。

  • 他のメンバーが使っているブランチを消さない

    リモートのブランチを削除する前に、他のメンバーがまだ作業中でないか確認しましょう。

関連コマンド