【问题标题】:Is assigning a git branch name not sufficient to undo a detached head?分配 git 分支名称是否不足以撤消分离的头部?
【发布时间】:2017-07-28 13:03:13
【问题描述】:

在最近的 20-30 次提交中,我一直处于分离状态:

> git status
HEAD detached from ac83503
nothing to commit, working tree clean

我最初并没有注意到我处于这种状态。现在我希望这个超然的头成为我的主要分支,所以我give it a name

> git branch the-good-one

最后一条命令没有提供任何反馈,但现在看来一切正常:git log | head -1 显示:

fc876a2 Tue Mar 7 23:10:14 2017 (HEAD, the-good-one) This is the commit message.

然而git status 仍然回复:

HEAD detached from ac83503
nothing to commit, working tree clean

分配 git 分支名称是否不足以撤消分离的头部状态?

【问题讨论】:

  • git symbolic-ref HEAD refs/heads/the-good-one

标签: git


【解决方案1】:

git branch 只创建一个分支,它不进行结帐。执行git checkout the-good-one 以检查新创建的分支。

同时创建和签出的简写是git checkout -b <branchname>

编辑后试图澄清事情:

你的出发点是一个分离的头部状态(顺便说一句,这很不寻常,也许你的工作流程中有一些奇怪的东西?)。所以,你的 HEAD 指向一些提交,我们称之为a。然后使用命令git branch the-good-one 创建一个新分支。没有任何进一步的参数,它会在当前 HEAD 上创建分支,因此新创建的分支也将指向 a

您的困惑似乎就在这里:仅仅因为您当前的(分离的)HEAD 恰好指向与新分支相同的提交,并不意味着您当前在新分支上。因此,如果您创建一个新提交,the-good-one 仍将指向 a,而不是新创建的提交。

经验法则:永远不要在分离的头部状态下做任何实际工作。如果您想测试旧版本,这很有用,但如果您需要进行更改,请始终创建(并签出)一个分支。

【讨论】:

  • 但是在正常的 git 使用中,检查当前所在的提交是完全多余的(在这种情况下是 fc876a2)。然而在这里你似乎建议这样做。我并不怀疑你的建议是准确的。我只是想了解发生了什么。
  • 我在这里建议您实际检查一个分支,而不是仅仅创建它然后继续使用分离的头。我不明白这是多余的。
猜你喜欢
  • 1970-01-01
  • 2021-09-09
  • 2011-04-30
  • 2018-05-23
  • 2010-12-31
  • 1970-01-01
  • 2010-10-03
  • 2022-08-02
  • 1970-01-01
相关资源
最近更新 更多