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

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

最佳答案

在幕后,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)

至此,您已经告诉 Remote 您想要什么。它找到它需要给你的所有对象(我相信在这个过程中计算它们),压缩它们以便通过网络更快地传输,然后报告它发送给你的内容。对象可以是 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 现在指向它。现在我们继续进行 merge ——确切地说,git 会将 FETCH_HEAD(远程的主分支) merge 到您当前的分支(大概是主分支)。

Updating 9d447d2..f74fb21
Fast forward

事实证明,您还没有从远程的 master 分支中分离出来,因此 merge 是一个快进(一个简单的 merge ,它只是让您在历史中向前移动)。 Git 会记录您的主分支 (9d447d2) 的原始位置和它被快速转发到的新位置 (f74fb21)。如果您从远程的主分支分支,您会在此处看到递归 merge 的输出 - Merge made by recursive ,可能还有一些Auto-merged <file>和(哦不!) merge 冲突!

 app/controllers/myproject_controller.rb |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

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

关于git - git pull 的输出实际上意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3340051/

相关文章:

GitHub:如何将 Gist 添加到存储库?

git - 如果本地存在分支,我应该在 pull 之前执行 git fetch 吗?

git - 使用 'git filter-branch' 来更正最后 N 次提交中的提交者日期?

git - git 分支上的提交数

git - 如何将修复提交提升为 Git 中的常规提交?

git - 如何在 merge 之前从第三方 fork 编辑 PR(而不是相信他们的代码)?

Git blame 文件中的作者列表

git - 如何安装/配置 Git::Hooks 以与 Gerrit 一起使用

git - 使用 GIT-SVN 而不是其他 SVN 客户端的缺点?

git - 如何将 git 存储库转换为 mercurial?