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

sla*_*f23 36 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(-)
Run Code Online (Sandbox Code Playgroud)

Cas*_*bel 55

引擎盖下,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)
Run Code Online (Sandbox Code Playgroud)

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

Unpacking objects: 100% (7/7), done.
Run Code Online (Sandbox Code Playgroud)

您收到包(压缩对象集)并解压缩.

From ssh://my.remote.host.com/~/git/myproject
 * branch            master     -> FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)

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

Updating 9d447d2..f74fb21
Fast forward
Run Code Online (Sandbox Code Playgroud)

事实证明,你没有偏离遥控器的主分支,所以合并是一个快进(一个简单的合并,它只是让你在历史中前进).Git注意到你的主分支(9d447d2)的原始位置和它被快速转发到的新位置(f74fb21).如果你偏离了遥控器的主分支,你会在这里看到递归合并的输出 - Merge made by recursive可能还有一些Auto-merged <file>和(哦不!)合并冲突!

 app/controllers/myproject_controller.rb |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)
Run Code Online (Sandbox Code Playgroud)

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

  • @Pangea 和其他将来可能会想知道的人:不,这并不意味着没有创建新分支,它只是意味着您没有同时提交尚未包含在远程分支中的更改。在这种情况下,没有什么可以合并的,您只需将新提交添加到本地分支之上,本地分支和远程分支将是相同的。++ 和 -- 只是每个文件中更改量的“图形”表示(+ 是插入,- 是删除),因此大致告诉您大多数更改去了哪里。 (2认同)