从远程拉取后,Git说本地分支领先于远程的分支

19

抱歉标题可能不够清晰,这是一个奇怪的问题。

我使用git checkout命令切换到我的“stage”分支,并执行git pull命令以获取合作伙伴在远程仓库上将最新更改(昨晚推送到“stage”分支)合并到本地“stage”分支。 git log <branch>显示他昨晚进行的五次提交。

然后我切换到主分支从仓库中拉取它,因为他告诉我他在测试后将这些更改合并到主分支。但是当我执行git checkout stage返回到我的“stage”分支时,它会提示我领先于远程分支5个提交。我执行git log origin/stage命令,它不显示我刚从该仓库中提取的五个提交(这个项目中唯一的远程仓库)。git log stage命令显示了我本地“stage”分支上的五个提交,因此我不知道远程分支如何在向我提供合作伙伴的最新提交后立即返回到过去。

我对此还比较陌生,请耐心等待我的理解,因为我仍在努力掌握分布式版本控制系统,很有可能我只是对一些基本的东西产生了误解。

2个回答

17

好的。这向我展示了本地阶段分支和远程阶段分支之间的五个提交差异。但是,我对那些提交(由其他人在另一个位置执行)如何合并到我的本地阶段分支,然后从远程阶段分支中消失感到困惑。 - Alfonso
5
请查看链接中的问题。如果您已正确设置,请执行git pull(无参数)或git pull origin但不要执行git pull <some url>:<remote ref> - J-16 SDiZ
哦,抱歉。由于某些原因,我在你的回答中只看到了“尝试这个命令”和命令本身,没有其他内容。 - Alfonso
4
“git pull origin” 报告“Already up-to-date.”,但解决了“You're ahead…”的提示信息,非常感谢!然而,为什么“git pull origin <branch>”会导致上述问题发生? - Alfonso
4
git pull origin <branch> 命令会更新 FETCH_HEAD 标签,但不会更新 origin/* 分支。 - J-16 SDiZ
我之前遇到过类似的问题,提示我比 origin 多了 4 次 commit。但是日志只显示多了一个 commit。于是我执行了 git diff asdf jkl 命令(其中 asdf 表示最新的 origin commit,jkl 则是新的神秘 commit),却发现根本没有任何区别。所以我使用了 git reset --hard asdf 命令,问题貌似得到解决了。 - Buttle Butkus

0

我现在遇到了类似的问题,之前发生了以下事情:

  • 我的同事提交了一个简单的修改
  • 我拉取了这个修改,我的工具标记为“提交合并变化立即执行”
  • 我的同事决定使用 --amend 修改原始提交,使其成为两个不同的提交
  • 我拉取了这些更改,结果比 origin 多了三个提交

我的简单解决方案是撤销这三个本地提交,对于每个提交运行以下命令:

git reset --soft HEAD~1

然后git status告诉我我落后于origin两个提交,我可以像往常一样拉取这些提交。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接