2016-07-08 145 views
0

git fetch B + merge B和merge origin/B有什么区别?有什么区别git fetch B + git merge B vs git merge origin/B

$ git fetch origin develop 
From [...] 
* branch   develop -> FETCH_HEAD 
$ git merge develop 
Already up-to-date. 
$ git merge origin/develop 
error: Your local changes to the following files would be overwritten by merge 
... 

在上述序列中我期望合并到输出相同,但结果是不同的。我预计“fetch”命令会在本地检索远程分支,以便它可用于本地合并操作。提取完成后,我期望从本地分支合并成为从原点合并的平等操作。这个期望我错了吗?

回答

0

提取只下载提交,但不适用于您的本地分支副本。对于这两个操作是等价的,您需要先将origin/B与(local)B合并。如果你不这样做,本地B的HEAD没有改变,并且分支将在原点后面(你可以通过运行git状态来检查本地B或通过运行git branch -vv来验证)。

请注意,这与您在git checkout B vs git checkout origin/B时的差异相同。

0
  • git fetch origin develop

    获取遥控器上的develop分支到您的远程分支origin/develop(其中本地存在)

  • git merge develop

    融合了当地develop分支到当前分支。假设你有develop目前签出,这不会做任何事情。

  • git merge origin/develop

    合并当地origin/develop分支到当前分支。 origin/develop指向origin远程的本地存储库中的远程分支develop。这将合并您在第一步中获取的分支。

+0

忘了提,我在功能/ XXX分支 – shamil

相关问题