尽管存在差异,但Git fetch / merge没有任何更新

时间:2015-08-14 18:26:18

标签: git github

我在GitHub上设置了一个存储库,我已将其设置为用于在两台PC(家庭和工作)之间同步代码。今天我遇到了一个奇怪的问题。

当我执行git fetch origin后跟git merge master时,我会收到消息Already up-to date。这意味着我的本地副本和远程分支都是镜像,对吧?但问题是两个存储库中的一些文件是不同的,并且让我感到困惑的是没有什么可以提交的(基本上远程存储库更新)。为了测试它,当我做git push origin master时,我收到错误Updates were rejected because the tip of your current branch is behind

后一种情况应该如此,但为什么我无法获取这些更改?请注意,我没有尝试git pull,因为我听说这是不好的做法。

========更新======

git remote show origin的输出如下(我的遥控器命名为todoparrot):

* remote todoparrot
  Fetch URL: https://github.com/ankush981/todoparrot.git
  Push  URL: https://github.com/ankush981/todoparrot.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (local out of date)

1 个答案:

答案 0 :(得分:1)

当你运行git merge master时,它假设你正在从master合并到你当前的分支(也是主分支),这总是无用的“已经是最新的”。

要手动合并,您可以运行:

git merge origin/master

此外,与output here相比,您的本地分支看起来没有“上游分支”集; git remote show origin通过说你没有“为git pull配置”来证明这一点。设置一个可能是个好主意,因此git可以推断出正确的行为而无需拼出所有内容。

要设置上游分支,请运行:

git branch --set-upstream=origin/master

此时,您可以手动合并:

git merge

...因为来自git merge docs

  

如果未从命令行提供任何提交,请合并当前分支配置为用作上游的远程跟踪分支。另请参见本手册页的配置部分。

作为个人而言,我不认为git pull是不好的做法,除了它很容易学习git pull并且永远不会了解幕后发生的事情。这是你经过几次长途跋涉后最好的捷径之一。 This article offers a similar opinion.