環境構築
HEAD detached at
HEADが切り離された状態(detached HEAD)
こんな症状
ブランチではなく特定のコミットを直接見ている状態。新しいブランチを作れば安全だよ。
まず試す
git switch -c 新しいブランチ名 で新しいブランチを作ると、通常のブランチ上で安全に作業できる。
env
# 新しいブランチを作って安全にする
git switch -c my-new-branch
# 元のブランチに戻る場合
git switch mainこれで直らなければ、下の「自分のケース」を確認。
🔍 自分のケースはどれ?
- ✓作業を続けたい
→ git switch -c 新しいブランチ名 でブランチを作ってからコミットする。 - ✓元のブランチに戻りたいだけ
→ git switch main で戻る。 - ✓detached のままコミットして見失った
→ git reflog で迷子のコミットを探し、git switch -c 救出ブランチ名 コミットID で回収する。
なぜ起きる?
git checkout でコミットハッシュやタグを直接指定したよ。この状態でコミットすると、どのブランチにも属さない「迷子のコミット」になってしまうんだ。
✕ エラーが起きるコード
git checkout abc1234
# You are in 'detached HEAD' state.
# HEAD is now at abc1234 some commit message✓ 直したコード
# 新しいブランチを作って安全にする
git switch -c my-new-branch
# これで通常のブランチ上で作業できる
# 元のブランチに戻る場合
git switch main✅ 直ったか確認
git status が「On branch <ブランチ名>」を表示すればOK(detached が解消)。
この解決法は役立ちましたか?
🔗 関連するエラー
- error: pathspec '...' did not match any file(s) known to git — 指定したファイル・ブランチが見つからない
- error: Your local changes would be overwritten by checkout / merge — コミットしていない変更が消えるのをGitが防いでいる
- Permission denied (publickey) — SSH鍵が設定されていない
- .gitignoreが効かない・無視されない — 追跡済みファイルには効かない/パターンの書き方ミス
- refusing to merge unrelated histories — 関連のない履歴をマージしようとしている
📖 この問題を学べるレッスン
✏️ 手を動かして練習
📝 関連ブログ記事
- プログラミングのエラーメッセージの読み方 — エラーの読み方を基礎から解説
- VS Codeのインストール方法 — インストールと初期設定を図解で解説
- プログラミング初心者が最初にやるべきこと5選 — 目的を決めて環境構築から