トラブルシューティング
不要になったブランチを整理する
マージ済みのローカルブランチやリモート追跡ブランチを安全に削除する方法
マージ済みのローカルブランチを削除する
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は確認なしで強制削除するので、本当に不要か確認してから使いましょう。mainやdevelopを削除しないまとめて削除する場合は
grep -vで保護対象のブランチを除外しましょう。他のメンバーが使っているブランチを消さない
リモートのブランチを削除する前に、他のメンバーがまだ作業中でないか確認しましょう。
Git Ready