はじめに
久しぶりにGitを触っていて、ブランチを削除しようとしたときにこんなエラーが出ました。
error: cannot delete branch 'feature_BT991Utest' used by worktree at 'C:/NS_Project/ns-batch'
「え、なんで消せないの?」と一瞬止まってしまったので、
原因と対処方法を初学者向けに整理しておきます。
対象読者
- 久しぶりにGitで操作を行う人
- Git操作に不慣れな人
エラーの内容
git branch -d test1
実行結果:
error: cannot delete branch 'test1' used by worktree at 'C:/Project/test'
1. エラーの意味:何が起きているのか?
used by worktree というのは、
👉 そのブランチは現在どこかで使用中です
という意味です。
具体的には次のどちらかです:
- 自分がそのブランチにいる(チェックアウトしている)
- 別の作業ディレクトリ(worktree)でそのブランチが開かれている
Gitでは、
👉 使用中のブランチは削除できない
というルールになっています。
2. 解決するための3つのステップ
ステップ1:別のブランチに切り替える
まずは削除したいブランチから離れます。
git checkout develop
または
git switch develop
(GUIツールなら別ブランチをクリックでOK)
ステップ2:もう一度削除する
git branch -d feature_BT991Utest
ステップ3:強制削除(必要な場合)
もし次のようなエラーが出た場合:
error: The branch is not fully merged
そのときは強制削除:
git branch -D test1
3. それでも消えない場合(worktreeのケース)
ブランチを切り替えたのに同じエラーが出る場合は、
👉 別の場所で同じブランチが開かれている可能性があります
例えば:
- 別フォルダで同じリポジトリを開いている
- VSCodeを複数ウィンドウで開いている
-
git worktreeを使っている
確認コマンド:
git worktree list
もし表示された場合は、そのworktreeを削除することで解決できます。
git worktree remove <path>
4. なぜこの制約があるのか?
Gitは、
👉 今作業している履歴(ブランチ)を誤って消さないため
にこの制限を設けています。
もし削除できてしまうと、
- 作業中の変更が消える
- HEADが壊れる
といった問題が起きるためです。
まとめ
-
原因:ブランチが使用中(チェックアウト or worktree)
-
対策:
- 別のブランチに切り替える
- 再度削除する
- 必要なら強制削除
-
それでもダメなら:worktreeを確認
おわりに
Gitの基本操作はシンプルですが、
しばらく触っていないと「なんでだっけ?」と詰まりがちです。
今回のように
👉 「今使っているものは削除できない」
というルールを思い出せば、すぐ解決できます。
同じところで引っかかった方の参考になれば嬉しいです。
補足:公式ドキュメントについて
Git公式ドキュメントでは直接的な記述は少ないですが、
公式の技術書では「現在のブランチは削除できない」と明記されています。
参考:
https://www.oreilly.com/library/view/version-control-with/9780596158187/ch07s08.html
The command git branch -d branch removes the named branch from a repository. Git prevents you from removing the current branch
