我只是注意到 git pull
有点奇怪,我不明白。
星期五,我在当地的一家分公司工作。我们叫它 mybranch
。在离开办公室之前,我把它推到了原点(我的 github 回购) : git push origin mybranch
。
昨天在家里,我把我的分支 pull
到我的笔记本电脑上,做了一些编码,然后把我的更改推回到 github (原始)。
现在我又开始工作了,我试着把昨天的改动放到我的工作机器上(周末我没有改动我工作地点当地的回购单上的任何东西) :
git pull origin mybranch
这导致了一个快速前进的合并,这是罚款。然后我做了一个 git status
,它说:
# On branch mybranch
# Your branch is ahead of 'origin/mybranch' by 6 commits.
#
nothing to commit (working directory clean)
啊?怎么可能是6提交提前,当我甚至没有触摸它在周末,并只是从原来的?所以我运行了一个 git diff origin/mybranch
,差异正好是我刚才从远程提取的6个变化。
我只能通过运行 git fetch origin
来“修复”这个问题:
From git@github.com:me/project
af8be00..88b0738 mybranch -> origin/mybranch
很显然,我的本地回购缺少了一些引用对象,但这怎么可能呢?我的意思是,一个 pull 已经执行了一次提取操作,而且除了那个分支之外,我没有做任何工作,所以 git fetch origin
和 git fetch origin mybranch
应该有相同的结果?
我应该总是使用 git pull origin
而不是 git pull origin branchname
吗?
我很困惑。