我正试图更全面地了解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(-)
答案 0 :(得分:53)
在幕后,git pull
为git 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
得到的。