Github Branch提前消息不清楚

时间:2012-09-22 23:15:29

标签: git github

git: Your branch is Ahead by X commits

Git branch is ahead of origin/master

我已阅读上述两个问题但仍未回答我的问题。基本上我做的是

  1. 在GitHub中创建一个新的存储库。
  2. 克隆并获取本地linux框中的数据
  3. 进行更改“git add”然后执行“git commit -m”消息“
  4. 最后做一个“git push https://github.com/username/sandbox.git”。这工作正常,我使用建议的https协议而不是SSH协议(请注意,如果我只是“git push”它使用我尚未配置的SSH协议,它失败了)
  5. 执行“git pull https://github.com/username/sandbox.git”以及“git fetch https://github.com/username/sandbox.git”,所有这些都成功执行了“已经是最新的”。
  6. 访问github网站,我可以看到更改。
  7. 现在运行“git status”,我现在看到以下

      

    在分公司主人上   你的分支在9次提交之前领先于'origin / master'。

  8. 这不是我的预期。有人能告诉我为什么git认为我在9次提交中领先于origin / master。我已经推送和拉取数据,所以我希望我的本地仓库与远程主/原始仓库完美同步。

    命令“git branch -av”显示以下内容

     * master                a99daf0 [ahead 9] submit
      remotes/origin/HEAD   -> origin/master
      remotes/origin/master 81c7ec1 remove out files
    

2 个答案:

答案 0 :(得分:2)

您已经领先于origin / master,因为您已将自己的补丁提交到当前分支。

可以显示:

$ git branch -av
master         0123abcd [ahead 9] Current commit comment

这样做的原因是您的本地分支是您自己的私有副本,并且实际上与origin / master不同。虽然您的本地分支master已设置为跟踪origin/master。所以git告诉你两个分支之间的区别。

上面的命令会显示master所在的点,您会看到origin/master的另一个条目。

现在,如果您执行了push,然后是fetch,然后是pull,那么当前的提交ID(显示在git branch -av)应该是相同的。如果不是,你需要弄清楚为什么不。也许:

$ git log origin/master..master   # this can help explain ?  OR...
$ git diff origin/master..master  # this can help explain

检查你在github上通过HTTP /浏览器看到的commit-id与git branch -av中哪个分支报告的commit-id相同。

如果事实证明没有区别,你可以checkout一个新的分支,切换到它,然后尝试删除旧的主分支git branch -d master默认情况下它不会让你有些补丁会丢失(因为它们尚未合并并推入上游主机)。

如果它不允许你删除分支。你可以要求git告诉你哪个commit-id两个分支共享相同的遗产(“它们都是以相同的版本开始生命,那是什么时候?”)。

$ git merge-base origin/master master

这将显示两个分支共享的最后一次提交。从那时起,每个分支都以自己的方式发散。您可以获取该commit-id,然后比较日志输出:

$ git log <commit-id>..<branch_name> --oneline
$ git log <commit-id>..<other_branch_name> --oneline

您现在可以看到它们如何变得不同。

答案 1 :(得分:0)

作为新手,我真正需要的是“Mims H Wright”在How can I find the location of origin/master in git, and how do I change it?描述的答案,最终指向链接http://fvue.nl/wiki/Git%3a_Your_branch_is_ahead_of_the_tracked_remote_branch

基本上我必须这样做

git push origin master:master