是否指定了一个不足以撤消分离头的git分支名称?

Cal*_*laf 2 git

在过去的20-30次提交中,我一直处于超级头状态:

> git status
HEAD detached from ac83503
nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)

我最初没有注意到我处于这种状态.现在我希望这个独立的头部成为我的主要分支,所以我给它起了个名字

> git branch the-good-one
Run Code Online (Sandbox Code Playgroud)

最后一个命令没有提供任何反馈,但看起来它现在可以了:git log | head -1显示:

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

然而git status 仍然回复:

HEAD detached from ac83503
nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)

是否指定了一个不足以撤消分离头状态的git分支名称?

161*_*903 5

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,而不是新创建的提交.

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