【问题标题】:Git says local branch is ahead of remote after having pulled from remoteGit 说从远程拉取后本地分支在远程之前
【发布时间】:2011-05-02 10:53:47
【问题描述】:

如果标题不清楚,我很抱歉,但这是一个奇怪的问题。

git checkout 到我的“stage”分支和git pull 获取我伙伴的最新更改(他昨晚推送到远程存储库的“stage”分支),果然,它们合并到我的本地“舞台”分支。 git log <branch> 显示了他昨晚执行的五个提交。

然后我切换到 master 分支以从 repo 中提取它,因为他告诉我他在测试后将这些更改合并到 master 分支。但是当我git checkout stage 回到我的“阶段”分支时,它说我领先远程分支 5 次提交。我git log origin/stage 它没有显示我刚刚从该存储库(该项目中唯一的远程存储库)中提取的五个提交。 git log stage 显示了我本地“阶段”分支上的五个提交,所以我不知道远程分支如何在为我提供伙伴的最新提交后立即回到过去。

我在这方面还很陌生,所以我会感谢您对我的耐心,因为我仍在努力掌握 DCVS,很有可能我只是误解了一些非常基本的东西。

【问题讨论】:

    标签: git commit git-pull


    【解决方案1】:

    试试这个命令:

    git log origin/stage..stage
    

    这会向您展示您在遥控器之前的情况。酌情执行git rebase origin/stage / git push

    如果没有帮助,请查看这个问题:'git pull origin mybranch' leaves local mybranch N commits ahead of origin. Why?

    【讨论】:

    • 好的。这向我展示了我的本地阶段分支和远程阶段分支之间的五个提交差异。但是我很困惑这些提交(由其他人在单独的位置执行)如何设法合并到我的本地阶段分支,然后从远程阶段分支中消失。
    • 查看链接的问题。你应该做一个git pull(无参数)或git pull origin但不是git pull <some url>:<remote ref>如果你设置正确。
    • 哦,对不起。出于某种原因,我在您的回答中看到的只是尝试此命令,该命令,仅此而已。
    • git pull origin 报告“已经是最新的”。但确实修复了“你领先……”消息,非常感谢!另一方面,为什么git pull origin <branch>会出现上述问题?
    • git pull origin <branch> 更新FETCH_HEAD 标签,但不更新origin/* 分支。
    【解决方案2】:

    在发生以下情况后,我现在遇到了类似的问题:

    • 我的同事推送了一个简单的提交
    • 我提取了那个提交,我的工具已标记“提交合并立即更改”
    • 我的同事决定执行 --amend 来更改他的原始提交,使其变为两个不同的提交
    • 我取消了这些更改,最终在原点之前提交了三个提交

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

    git reset --soft HEAD~1
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-20
      • 2012-03-03
      • 2015-04-24
      • 2014-03-06
      • 1970-01-01
      • 2013-09-07
      • 2022-11-19
      • 2015-10-19
      相关资源
      最近更新 更多