2015-08-14 279 views
0

我在GitHub上设置了一个存储库,该存储库已设置为用于在两台PC(家庭和工作)之间同步代码。今天我遇到了一个奇怪的问题。尽管存在差异,但Git获取/合并没有任何更新

当我做一个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,因为我听说这是不好的做法。

======== UPDATE ======

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) 
+0

我不真的使用命令行,所以我不完全确定它是如何工作的,但如果没有任何本地更改,那么不会有什么合并?即不会成为唯一有效的东西? –

+1

你可以编辑添加'git remote show origin'的结果,必要时进行编辑吗?这听起来像您的跟踪可能不会一致设置。 –

+0

@JeffBowman补充说明! – dotslash

回答

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.

+0

甜!我如何总是能够进入'git'的沉洞? :d – dotslash

相关问题