有人告诉我,您可以通过以下方式向与当前 Git 分支名称相匹配的远程分支推送和 pull :
git push origin HEAD
或
git pull origin HEAD
它以前一直对我有用,但奇怪的是有时它不起作用,而是推迟从 master 分支推/pull (这会导致 pull merge ......不是我想要做)。我知道您可以通过简单地使用分支名称轻松地从您所在的分支推送/pull :
git pull origin name-of-branch-i-want-to-pull-from
无论如何:
- 是否有某种原因导致 HEAD 丢失跟踪/不指向我当前的分支,就像它几乎总是这样?
- 有没有什么方法可以推/pull 到我当前正在处理的分支(只要远程分支的名称匹配),而无需在命令中明确命名分支?
最佳答案
问题是,当你这样做时:
git push origin HEAD
HEAD
在这里表示您的本地 存储库中的默认分支。
但是,当您这样做时:
git pull origin HEAD
HEAD
在这里表示您的远程 存储库上的默认分支。
这 2 个 HEAD 可以有相同的分支名称,但通常它们是不同的。
例如,如果你的本地仓库和远程仓库的默认分支都是master
,那么你在本地仓库切换到一个新的分支feature
,然后推送它通过执行 git push origin HEAD
到远程,远程的默认分支不会神奇地更改为 feature
。相反,它将停留在 master
。此时,如果您在功能分支上执行 git pull origin HEAD
,您实际上是在执行 git pull origin master
。
所以我建议避免执行 git pull origin HEAD
,因为远程的默认分支是什么并不明显,并且可能会导致意外问题。
关于Git pull 原点 HEAD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12532913/