Git 分离头状态
Git detached head state
我正在检查 tutorial for angularjs。在本教程的第 0 步中,它指示我 运行:
git checkout -f step-0
当我 运行 得到 "You are in 'detached HEAD' state" 时,我认为这意味着我刚刚创建了一个名为 "step-0" 的新功能 b运行ch,以前不存在.然后我重新加载我的网页,发现来自 b运行ch 大师的所有很酷的东西现在都不见了。相反,我得到了这个显示 "Nothing here yet!" 的基本页面。
现在这都是正确的行为。我的问题是为什么 git checkout
改变了我的代码状态?
我可以理解 b运行ch 是否存在并且我切换了 b运行ches 然后是的,这会改变我的代码。但在这种情况下,b运行ch 似乎不存在,而且我在 github 上没有看到名为 "step-0" 的 b运行ch。
所以在我看来,我只是 b运行 关闭了 Master 并创建了一个新功能 b运行ch。在这种情况下,代码的任何更改对我来说都没有意义。
发生了什么事?
"detached HEAD" 消息表示您不在 任何 分支的顶端。您已返回到 master 分支上的较早提交,但尚未创建从那里开始的新分支。
您通过切换到 "step-0" 标签到达了那里。 Git 中的 tag 基本上是提交 ID 的别名:"step-0" 指的是提交 96a9b5b7fa5e5667e099d25c20a4bb19992c0f72
。标签通常用于命名版本(例如,作为版本 1.0 发布的修订版上的 "v1.0" 标签),但在这种情况下,它们仅用于在您按照教程操作时轻松切换到特定修订版.不需要分支,因为您不会从那里提交一组不同的更改。
分支和标签的相似之处在于它们都是指代提交的名称。不同之处在于分支 在您创建新提交时更改 — 分支名称每次都会更新以引用新的提交 ID — 而标签通常用于记录历史记录点' 更改,例如特定发布版本的内容。 (可以更改标签,但仅在可以更改分支历史的相同意义上:如果您已经将标签推送给其他人,则必须要求他们删除它并拉取新的取而代之的是一个。您不能强迫其他人更改标签。)
如果您想要从刚刚移动到的提交开始一个新分支,您可以这样做:git checkout -b my-branch
。
我正在检查 tutorial for angularjs。在本教程的第 0 步中,它指示我 运行:
git checkout -f step-0
当我 运行 得到 "You are in 'detached HEAD' state" 时,我认为这意味着我刚刚创建了一个名为 "step-0" 的新功能 b运行ch,以前不存在.然后我重新加载我的网页,发现来自 b运行ch 大师的所有很酷的东西现在都不见了。相反,我得到了这个显示 "Nothing here yet!" 的基本页面。
现在这都是正确的行为。我的问题是为什么 git checkout
改变了我的代码状态?
我可以理解 b运行ch 是否存在并且我切换了 b运行ches 然后是的,这会改变我的代码。但在这种情况下,b运行ch 似乎不存在,而且我在 github 上没有看到名为 "step-0" 的 b运行ch。
所以在我看来,我只是 b运行 关闭了 Master 并创建了一个新功能 b运行ch。在这种情况下,代码的任何更改对我来说都没有意义。
发生了什么事?
"detached HEAD" 消息表示您不在 任何 分支的顶端。您已返回到 master 分支上的较早提交,但尚未创建从那里开始的新分支。
您通过切换到 "step-0" 标签到达了那里。 Git 中的 tag 基本上是提交 ID 的别名:"step-0" 指的是提交 96a9b5b7fa5e5667e099d25c20a4bb19992c0f72
。标签通常用于命名版本(例如,作为版本 1.0 发布的修订版上的 "v1.0" 标签),但在这种情况下,它们仅用于在您按照教程操作时轻松切换到特定修订版.不需要分支,因为您不会从那里提交一组不同的更改。
分支和标签的相似之处在于它们都是指代提交的名称。不同之处在于分支 在您创建新提交时更改 — 分支名称每次都会更新以引用新的提交 ID — 而标签通常用于记录历史记录点' 更改,例如特定发布版本的内容。 (可以更改标签,但仅在可以更改分支历史的相同意义上:如果您已经将标签推送给其他人,则必须要求他们删除它并拉取新的取而代之的是一个。您不能强迫其他人更改标签。)
如果您想要从刚刚移动到的提交开始一个新分支,您可以这样做:git checkout -b my-branch
。