理解git中的分离HEAD

时间:2013-09-26 16:29:52

标签: git

我正在学习git并且正在遵循http://gitimmersion.com的优秀教程。

在这些教程中,有一个模糊试图解释分离的HEAD,并指出:

  

git中的“分离的HEAD”消息只是意味着HEAD(跟踪当前工作目录应匹配的内容的git部分)直接指向提交而不是分支。只有在您不切换到其他分支时,才会记住在此状态下提交的任何更改。一旦您签出新的分支或标签,分离的提交将“丢失”(因为HEAD已移动)。如果要保存以分离状态完成的提交,则需要创建一个分支来记住提交。

关于这个问题:

  1. 什么是分离的HEAD,以及创建它的条件是什么?
  2. 为什么分离的HEAD指向特定的提交而不是分支?
  3. 当你有一个分离的HEAD时,你是否总是需要创建一个新的分支来提交/推送它的变化?为什么/为什么不呢?
  4. 提前致谢!

1 个答案:

答案 0 :(得分:6)

如果您正在使用您的仓库并执行git checkout <SHA>,那么您将处于“独立头部”。您不在分支上(提交可能在多个分支上)。您已签出历史记录中的特定实例。

当您进行变基时,也可能出现分离的头部。您已签出特定提交。

您需要创建一个分支才能提交/推送更改,因为您将创建“陷入困境”的提交,除了SHA之外无法识别它们。 Git将在垃圾收集期间删除提交,因为它不在分支上。

查看此页面上的“独立头部”部分,了解更多深入信息: http://git-scm.com/docs/git-checkout