在底层,git pull
是由 git fetch
和 git merge
两个命令组成的。下面是 fetch 部分:
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 7 (delta 2), reused 0 (delta 0)
在这一点上,你已经告诉远程服务器你需要什么。它找到所有需要给你的对象(在此过程中对它们进行计数),为了更快地在网络上传输而进行压缩,然后报告它正在发送给你的内容。对象可以是 blob、tree、commit 或 tag——有关更多信息,请参见
git 书籍。
Unpacking objects: 100% (7/7), done.
你收到一个压缩对象的集合,需要对其进行解压。
From ssh://my.remote.host.com/~/git/myproject
* branch master -> FETCH_HEAD
你已经从提供的远程库检出了'master'分支;现在,我们将进行合并 - 精确地说,Git将把FETCH_HEAD(远程的master分支)合并到当前分支中(很可能是master分支)。
Updating 9d447d2..f74fb21
Fast forward
原来你没有偏离远程的主分支,所以合并是一个快进(一种简单的合并方式,只是让你在历史记录中向前移动)。Git记录了你的主分支的原始位置(9d447d2)和它被快进到的新位置(f74fb21)。如果你已经偏离了远程的主分支,你会在这里看到递归合并的输出 - Merge made by recursive
,可能还有一些Auto-merged <file>
和(糟糕!)合并冲突!
app/controllers/myproject_controller.rb | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
最后,它会向您显示您的主分支在合并前和合并后位置之间的diffstat;这基本上是从 git diff --stat master@{1} master
中获得的内容。