git pull的输出实际意味着什么?

时间:2010-07-27 00:59:58

标签: git

我正试图更全面地了解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 个答案:

答案 0 :(得分:53)

在幕后,git pullgit fetch,后跟git merge。这是获取部分:

remote: Counting objects: 11, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 7 (delta 2), reused 0 (delta 0)

此时,你已告诉遥控器你想要什么。它找到了它需要给你的所有对象(我相信在这个过程中计算它们),压缩它们以便通过网络更快地传输,然后报告它发送给你的内容。对象可以是blob,树,提交或标记 - 有关详细信息,请参阅git book

Unpacking objects: 100% (7/7), done.

您收到包(压缩对象集)并将其解压缩。

From ssh://my.remote.host.com/~/git/myproject
 * branch            master     -> FETCH_HEAD

你从给定的遥控器中取出了分支'master'; ref FETCH_HEAD现在指向它。现在我们继续进行合并 - 确切地说,git会将FETCH_HEAD(远程主分支)合并到当前分支(可能是主分支)。

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(-)

最后,它显示了主分支的原始位置和合并后位置之间的差异;这基本上是你从git diff --stat master@{1} master得到的。