* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * * * '*' '' '' '' '' '' '' '' '' '' 100%].В цитируемой вами документации также подразумевается --single-branch
, что упрощает разговор об этом.Важным моментом здесь является то, что прогулка посещает всех родителей каждого коммита, что - для каждого уровня глубины - больше, чем один коммит, если сам коммит является слиянием.
Предположим, у нас естьграф коммитов, который выглядит следующим образом:
$ git log --graph --oneline master
* cf68824 profile: fix PATH with GOPATH
* 7c2376b profile: add Ruby gem support
* 95c8270 profile: set GOPATH
* 26a9cc3 vimrc: fiddle with netrw directory display
* 80b88a5 add ruby gems directory to path
[snip]
Здесь каждый коммит имеет только одного родителя.Если мы используем --depth 3
, мы возьмем коммит-наконечник cf68824
, его родительский 7c2376b
на глубине 2 и, наконец, 95c8270
на глубине 3 - и затем мы остановимся с тремя фиксациями.
Однако в репозитории Git для Git:
$ git log --graph --oneline master
* 965798d1f2 Merge branch 'es/format-patch-range-diff-fix-fix'
|\
| * ac0edf1f46 range-diff: always pass at least minimal diff options
* | 5335669531 Merge branch 'en/rebase-consistency'
|\ \
| * | 6fcbad87d4 rebase docs: fix incorrect format of the section Behavioral Differences
* | | 7e75a63d74 RelNotes 2.20: drop spurious double quote
* | | 7a49e44465 RelNotes 2.20: clarify sentence
[snip]
При --depth 3
мы начинаем с 965798d1f2
, затем - для глубины 2 - подбираем обоих родителей, ac0edf1f46
и 5335669531
.Чтобы добавить коммиты глубины 3, мы подберем всех родителей этих двух коммитов.(Одинокий) родитель ac0edf1f46
здесь не виден, тогда как два родителя 5335669531
(а именно 6fcbad87d4
и 7e75a63d74
).Чтобы получить хэш-идентификаторы родителей ac0edf1f46
, мы можем использовать:
$ git rev-parse ac0edf1f46^@
d8981c3f885ceaddfec0e545b0f995b96e5ec58f
, что дает нам шесть коммитов: наконечник мастера (который в настоящее время является коммитом слияния), два родителя которогоcommit, один родитель одного из этих родителей и два родителя другого этого родителя.
В зависимости от того, когда именно вы запустили клон Git, самый верхний master
часто не является слиянием,но часто имеет слияние в качестве непосредственного родителя, так что --depth 2
будет часто получать вам 3 коммита, и поэтому --depth 3
получит по крайней мере 5, в зависимости от того, являются ли два родителя кончика master
сами являются слияниями.
(Сравните приведенный выше вывод git rev-parse
, например, с:
$ git rev-parse 965798d1f2^@
5335669531d83d7d6c905bcfca9b5f8e182dc4d4
ac0edf1f46fcf9b9f6f1156e555bdf740cd56c5f
. Суффикс ^@
означает всех родителей коммита, ноне сам коммит .)