繁体   English   中英

Git超脱头状态

[英]Git detached head state

我正在阅读有关angularjs教程 在本教程的第0步中,它指示我运行:

git checkout -f step-0

运行此命令时,我得到“您处于'分离的HEAD'状态”,这意味着我刚刚创建了一个新的功能分支,称为“ step-0”,该分支以前不存在。 然后,我重新加载了网页,发现master分支中所有很棒的东西都消失了。 相反,我得到了一个基本页面,上面写着“这里什么都没有!”。

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

我可以理解分支是否存在并且我切换了分支,然后可以更改代码。 但是在这种情况下,分支似乎不存在,并且我在github上看不到名称为“ step-0”的分支。

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

发生了什么?

“分离的HEAD”消息表示您不在任何分支机构的顶端。 您已回到master分支上的较早提交,但尚未创建从此处开始的新分支。

您通过切换到“ step-0”标签到达了那里。 Git中的标签基本上是提交ID的别名:“ step-0”是指提交96a9b5b7fa5e5667e099d25c20a4bb19992c0f72 标签通常用于命名发行版(例如,版本1.0发行的修订版中的“ v1.0”标签),但是在这种情况下,它们只是用来使您在遵循本教程时可以轻松切换到特定修订版。 不需要分支,因为您不会从那里提交一组不同的更改。

分支和标记的相似之处在于它们都是引用提交的名称。 区别在于,分支在您创建新的提交时会发生变化 -分支名称每次都会更新为引用新的提交ID-而标签通常用于记录历史中不变的点,例如a的内容特定的发行版本。 (可以更改标签,但仅在与更改分支历史记录相同的意义上:如果您已经将标签推给其他人,则必须要求他们删除标签并拉出新标签相反,您不能将标签更改强加给其他人。)

如果你开始一个新的分支从你刚搬到提交,你可以这样做: git checkout -b my-branch

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM