27

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

在那些教程中,有一个试图解释分离的 HEAD 的简介,并指出:

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

关于这个的几个问题:

  1. 什么是分离的 HEAD,它是由什么条件产生的?
  2. 为什么分离的 HEAD 指向特定的提交而不是分支?
  3. 当您有一个分离的 HEAD 时,您是否总是需要创建一个新分支才能提交/推送其中的更改?为什么/为什么不?

提前致谢!

4

1 回答 1

25

如果你在你的 repo 中工作并且git checkout <SHA>你将处于一个“分离的 HEAD”中。您不在一个分支上(提交可能在多个分支上)。您已签出到历史记录中的特定实例。

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

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

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

于 2013-09-26T16:46:43.663 回答