为什么在检查最近的提交后我有一个分离的 HEAD?

Tre*_*vor 5 git git-checkout git-detached-head

最近在一个git仓库中工作时,我想在一个旧的提交( 68cce45)处查看代码,所以我做了

git checkout 68cce45
Run Code Online (Sandbox Code Playgroud)

查看更改后,我想返回到存储库的当前版本并继续工作。由于2bcfd11是最近的提交,我做了

git checkout 2bcfd11
Run Code Online (Sandbox Code Playgroud)

然后我做了一些改变并做了

git add *
Run Code Online (Sandbox Code Playgroud)

进而

git status
Run Code Online (Sandbox Code Playgroud)

这给了我警告:HEAD detached at 2bcfd11

我糊涂了。如果我检出的最后一次提交是在几个版本之前,我可以理解为什么我会处于“分离的 HEAD 状态”。但是由于我检出的最后一次提交是存储库的最新版本,那么为什么我会处于分离的 HEAD 状态?HEAD 现在不是指向存储库的“顶部”吗?

phd*_*phd 6

为什么我会处于分离的 HEAD 状态?

因为您已签出提交而不是分支。签出任何提交——并且您处于分离的 HEAD 状态。

HEAD 现在不是指向存储库的“顶部”吗?

git真的不知道它是否是顶级的。你必须git通过检查一个分支来解释:

git checkout master
Run Code Online (Sandbox Code Playgroud)

现在git知道它是一个已知分支的负责人。HEAD 分离问题结束。