git fetch和后续合并与git pull不一样 - 为什么?

时间:2014-07-17 11:04:52

标签: git github

我很可能在这里遗漏了一些东西。

为什么

git fetch origin master

输出

remote: Counting objects: 4, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (4/4), done.
From https://github.com/groupschoof/PhyloFun
 * branch            master     -> FETCH_HEAD

以及随后的

git merge origin/master

给出输出

Already up-to-date.

虽然

git pull origin master

确实

From https://github.com/groupschoof/PhyloFun
 * branch            master     -> FETCH_HEAD
Updating c6bd22b..234cd22
Fast-forward
 R/geneOntologySQL.R |   77 ++++++++++[rest of line omitted]
 1 file changed, 30 insertions(+), 47 deletions(-)

因此,简而言之,为什么git pull origin master会触发已提取补丁的合并,而合并后的git fetch origin master和后续git merge origin/master却没有?

对于启蒙,我将非常感激!

干杯!

1 个答案:

答案 0 :(得分:0)

  

因此,简而言之,为什么git pull origin master会触发已提取补丁的合并,而合并后的git fetch origin master和后续git merge origin/master却没有?

首先,自git 1.8.4起,除了origin/master之外,git fetch将始终更新FETCH_HEAD:请参阅" git fetch, FETCH_HEAD and origin/master"。
这意味着git merge origin/master将始终返回Already up-to-date条消息。

其次,git pull是当前本地分支(不是远程跟踪分支)上的git fetch + git merge:它在{{1}上合并},而不是master

问题中看到的(快进)合并是origin/master分支正在更新。