Git脱离了头状态

时间:2015-02-24 16:52:30

标签: angularjs git

我正在浏览tutorial for angularjs。在本教程的第0步中,它指示我运行:

git checkout -f step-0

当我跑步时,我得到了#34;你已经离开了HEAD'状态"我认为我刚刚创建了一个名为&#34的新功能分支;步骤0"以前没有的。然后我重新加载了我的网页,发现主分支中的所有很酷的东西现在都消失了。相反,我得到了这个基本页面,其中没有任何内容!#34;。

现在这是正确的行为。我的问题是为什么git checkout改变了我的代码状态?

我能理解分支是否存在,然后我切换分支然后会改变我的代码。但在这种情况下,看起来分支不存在,我不会通过名称"步骤0"看到分支。在github

所以在我看来,我只是分支了Master并创建了一个新的功能分支。在这种情况下,代码的任何更改对我都没有意义。

发生了什么事?

1 个答案:

答案 0 :(得分:1)

"分离的HEAD"消息表示您不在任何分支的顶端。你已经回到了master分支上的早期提交,但你还没有创建一个从那里开始的新分支。

你通过切换到"步骤0"标签。 Git中的tag基本上是提交ID的别名:" step-0"提交96a9b5b7fa5e5667e099d25c20a4bb19992c0f72。标签通常用于命名版本(例如,作为版本1.0发布的版本上的" v1.0"标签),但在这种情况下,它们仅用于使其易于切换到按照本教程进行特定修订。不需要分支,因为您不会从那里提交不同的变更。

分支和标签类似,因为它们都是引用提交的两个名称。不同之处在于,当您创建新提交时,分支会更改 - 每次更新分支名称以引用新的提交ID - 而标记通常用于记录历史记录中不包含的提交ID。 t更改,例如特定发布版本的内容。 (可以更改标签,但只能改变分支机构的历史记录:如果您已将标签推送给其他人,则您可以“我们必须要求他们删除它并取出新的。你不能强迫其他人更改标签。)

如果您希望从您刚刚转移到的提交中启动新分支,则可以执行此操作:git checkout -b my-branch