Gitでブランチを削除しようとして「チェックアウト中なので削除できない」
あるいは「未マージのため -d では削除できない」といったエラーに遭遇することがあります。
本記事では、代表的な2つのエラー原因と、安全に作業を進めるための確認・解決手順をまとめます。
よくあるエラー1:現在チェックアウト中のブランチは削除不可
error: Cannot delete branch 'xxx' checked out at ...
は、削除対象のブランチに自分がいる(=チェックアウトしている)状態を示します。
別のブランチ(例:main
)へ移動してから削除します。
git checkout main
git branch -d release/20250922
または git switch
を使っても構いません。
git switch main
よくあるエラー2:未マージのため -d では削除不可
error: The branch 'xxx' is not fully merged.
は、削除対象ブランチに未マージのコミットが残っていることを示します。
基本方針は「必要な変更は取り込んでから削除」です。
git checkout main
git merge release/20250922
git branch -d release/20250922
不要であれば強制削除も可能です。
git branch -D release/20250922
削除前の安全チェック(差分・履歴の確認)
削除してよいか判断に迷う場合は、現在の基準ブランチ(例:main
)に取り込まれていないコミットを確認します。
git log release/20250922 --not main
git diff main...release/20250922
現在ブランチの確認と切り替え
今どのブランチにいるかは以下で確認できます。
git status
git branch
別ブランチへ移動するには以下を使います。
git checkout main
# または
git switch main
リモートブランチの削除
リモート側のブランチも不要なら削除します。
git push origin --delete release/20250922
git fetch --prune
万一の復旧ヒント(reflog)
誤って削除した場合は git reflog
で履歴を確認し、コミットハッシュから復旧できる可能性があります。
git reflog
git checkout -b restore_branch <コミットハッシュ>
実践フロー(まとめ)
1. git status で現在ブランチを確認
2. main などへ切り替え
3. git log 削除対象 –not main で未マージ確認
4. 必要なら git merge 削除対象 → git branch -d 削除対象
5. 不要と確信できる場合のみ git branch -D 削除対象
6. リモートも不要なら git push origin –delete 削除対象
今回のエラーへの当てはめ
「チェックアウト中で削除不可」エラーは、まず別ブランチへ切り替えてから再実行。
「未マージで -d 不可」エラーは、未取り込みのコミットが残っています。
差分・履歴を確認し、必要ならマージ後に -d
、
不要ならリスクを理解した上で -D
を使用してください。