理解git中的分离HEAD

4 git

我正在学习git并且正在关注http://gitimmersion.com上的优秀教程.

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

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

关于这个的一些问题:

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

提前致谢!

Sch*_*eis 9

如果你在你的回购工作,git checkout <SHA>你会在一个"独立的HEAD".您不在分支上(提交可能在多个分支上).您将签出历史记录中的特定实例.

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

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

查看此页面上的"Detached Head"部分以获取更多深入信息:http: //git-scm.com/docs/git-checkout