git checkout my_branch vs. git checkout origin/my_branch

art*_*rtm 19 git

我是branch1当我结帐branch2这样的(这两个分支的存在).

git checkout origin/branch2

然后我得到一个超然的头错误:

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.
Run Code Online (Sandbox Code Playgroud)

但后来我只是结帐branch2(没有origin)然后它工作正常:

git checkout branch2

那么git checkout有没有什么区别origin/; 以及detached HEAD使用时出现错误的原因origin/

tor*_*rek 18

"分离的HEAD"消息是警告,而不是错误.

原因很简单.Git有两个关于分支的状态:

  • 在一个分支上,或
  • 不在树枝上

当您在分支上并进行新的提交时,分支会自动前进以包含新的提交.

当你不在分支机构并进行新的提交时,非分支也会前进,但是 - 这是警告的原因 - 如果你然后切换到其他分支(这样你就在它上面),git会忘记你在哪里.1 当您在分支机构时,分支名称会记住新的提交; 当你不是,没有什么可以记住它们.

您不能在远程跟踪分支上

该分支origin/branch2是一个远程跟踪分支:即,记得有一个分支"其中branch2是在origin我们最后一次(我们的Git和origin的GIT)有一个关于分支机构的谈话".因为这一点是为了追踪它们的位置,git不会让你"接通"那个分支并进行新的提交(然后会记住你的位置而不是它们所在的位置).

因为你不能使用它,所以检查它会给你那个"分离的HEAD"状态.

但你可以在普通(本地)分支机构

分支branch2是普通的普通本地分支.你可以按照自己的意愿去做.你可以使用它并进行新的提交.

(你的本地分支也可以记住远程跟踪分支,因为它所谓的上游 .Git令人困惑的术语是你的本地分支然后"跟踪"远程跟踪分支."跟踪"这个词出现太多次了这里,和"分支"这个词一样,都有不同的含义.)


1其实它保存了一段时间,在引用日志HEAD,但是这仅仅是由默认为30天佳.