我无法签出特定的分支,“脱离HEAD状态”
我和我的朋友有他创造的回购。 然后,他为我们创建了一个名为“词法分析器”的分支。
问题是,虽然他可以在主和词法分析器之间切换,但对我来说根本不起作用。
最后,我刚刚开始( rm -rf repo
,然后克隆回购),但仍然无法检出词法分支?
在新鲜克隆的回购中:
git branch
给出:
$ git branch
* master
git checkout lexer
给出:
$ git checkout lexer
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
我可以检查原点/词法分析器,但我最终处于分离的HEAD状态?
$ git checkout origin/lexer master
Note: checking out 'origin/lexer'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
我可以通过这样做来推动词法分支
git push origin HEAD:lexer
但是,我真的很想把这个问题搞清楚。 这很奇怪,它适用于他,但不适合我? 他说他还没有从git repo进行任何本地更改......
任何人有任何线索?
我要冒险猜测你在顶层有一个名为lexer
的目录。 由于git checkout
既用于切换分支并重置树中的文件,也可能检测到您没有名为lexer
的分支,但您确实有路径并选择第二种模式。 它适用于你的朋友,因为他已经有一个lexer
分支。
最简单的解决方法可能是使用git branch
来创建git branch
。
git branch --track lexer origin/lexer
应该为你做。 然后你可以使用git checkout
来切换到它。
另一个选择可能是使用--
标志来进行git结账。 我没有尝试过,但我认为它应该工作:
git checkout lexer --
当你添加--
,它之前的单词总是被视为分支/提交/树和路径之后的单词。
你不能检出词法分析器,因为你的本地资源库中没有分支(当然还有一个同名的文件夹)。 你只有远程分支的起源/词法分析器。 首先你必须创建本地分支:
git checkout -b lexer origin/lexer
关于这个问题的一个很好的解释:https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Tracking-Branches
您进入分离的HEAD状态,因为origin/lexer
是远程跟踪分支,因此只能读取。 你只想结账lexer
,然后在这方面做你的工作。 然后,当你推动时, origin/lexer
将被更新。
编辑 :重读你的问题,我看到你试图结账词法分析器,但最终停留在主人身上。 奇怪的是, git checkout
失败了。 尝试使用git checkout -t origin/lexer
。
上一篇: I can't checkout a specific branch, "detached HEAD state"