git pull的输出实际上是什么意思?

46

我试图更全面地了解git。

有人能给我一个基本的git pull输出的逐行简单解释吗?例如:

remote: Counting objects: 11, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 7 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (7/7), done.
From ssh://my.remote.host.com/~/git/myproject
 * branch            master     -> FETCH_HEAD
Updating 9d447d2..f74fb21
Fast forward
 app/controllers/myproject_controller.rb |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)
1个回答

72

在底层,git pull 是由 git fetchgit 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 中获得的内容。


+1 “原来你没有偏离远程的主分支” - 你的意思是没有创建新的分支?另外,++或--是什么意思? - Aravind Yarram
3
@Pangea和其他可能在未来有疑问的人:它并不意味着没有创建新的分支,而仅仅意味着你没有并发地提交尚未包含在远程分支中的更改。在这种情况下,没有需要合并的内容,你只需要将新的提交添加到本地分支之上,那么你的本地分支和远程分支将会完全一致。++和--仅仅是每个文件更改数量的“图形”表示(+表示插入,-表示删除),因此大致告诉你最多的更改出现在哪里。 - tne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接