Что на самом деле означает вывод git pull? - PullRequest
35 голосов
/ 27 июля 2010

Я пытаюсь получить более глубокое понимание мерзавца.

Может кто-нибудь дать мне простое построчное объяснение, что означает базовый вывод 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 Ответ

54 голосов
/ 27 июля 2010

Под капотом 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' с данного пульта; ссылка 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...