分离头指针
错误信息
HEAD is now at <commit-hash>
快速摘要
你 `git checkout` 了一个具体的提交哈希或标签,HEAD 不再指向分支,此时新做的提交不会属于任何分支,容易丢失。
为什么发生
git checkout <commit-hash>直接切到某个提交git checkout <tag>切到某个标签rebase 过程中临时进入 detached HEAD 状态
最小示例
✗ 错误代码
git checkout abc1234
# 现在处于 detached HEAD,新提交会丢失✓ 修复代码
git checkout -b explore-old abc1234
# 现在在新分支 explore-old 上,提交不会丢直接 checkout 提交会进入 detached HEAD。用 git checkout -b <新分支> <提交> 一步到位创建分支并切过去,提交就安全了。
如何诊断
运行
git status,看是否提示HEAD detached at ...运行
git branch看当前是否不在任何分支上用
git log --oneline -5查看最近的提交,确认是否在预期位置
如何修复
如果想保留当前提交,先
git branch <新分支名>把它保存到一个新分支如果想回到之前的工作,
git checkout <原分支>切回去如果 rebase 中,按提示
git rebase --continue完成操作
如何预防
切到具体提交前先创建一个新分支:
git checkout -b <branch> <commit>避免直接
git checkout <hash>,除非你明确知道自己在做什么