Skip to content

分离头指针

错误信息

                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>,除非你明确知道自己在做什么

相关资源

相关术语

相关课程

相关练习

← 返回语言