Дерево являє собою ієрархічну сукупність файлів і каталогів, а не прив'язані до якоїсь - або конкретній точці в історії. Наприклад, якщо ви створите файл, а потім видалите файл (без жодних інших втручаються комісій), ви отримаєте те саме дерево, з яким ви почали.
Здійснення зобов’язань є моментом в історії вашого проекту. Коміт вказує дерево, але також містить іншу інформацію, таку як автор / фіксатор та час, повідомлення про фіксацію (в якому автор описує, що змінилося), а головне - нульове чи більше батьків, які є попереднім станом сховища. (Ваша перша комісія має нульових батьків. Більшість комісій після цього мають одного з батьків під час лінійної розробки, і більше одного, якщо ви зливаєтеся.)
Ви можете зрозуміти, як це працює з git cat-file -p
командою, яка друкує вміст певного хеша, незалежно від типу. Наприклад, щоб переглянути команду HEAD, ви можете запустити:
$ git cat-file -p HEAD
tree 81ca1cb660ea79131336944df28b13b711d93557
parent 92b6b8fe9956866ace5397e060e7cc8ee1c76233
parent 7ea2575ed96d150ee19f70edea4bd42c7c2f0b83
author Mislav MarohniÄ <mislav.marohnic@gmail.com> 1436468108 -0700
committer Mislav MarohniÄ <mislav.marohnic@gmail.com> 1436468108 -0700
Merge pull request #951 from github/global-args
Avoid depending on a hardcoded list of git global flags
Щоб побачити дерево всередині комітету, ви можете cat-file -p
це дерево:
$ git cat-file -p 81ca1cb660ea79131336944df28b13b711d93557
100644 blob 730f77a3be502cfe6769c1305c0b59c22274caf5 .gitignore
100644 blob bcbd000f6b9ad5b0510f804ac4a3b19306b39c03 .travis.yml
100644 blob da71aa1fa3c3ae47b2fe5e6245ce2eea1586e278 CONTRIBUTING.md
...
Аналогічно, якщо ви подивитеся на батьків, ви побачите, що це теж коміти. Скорочення для дерева всередині комітету, такого як rev
є rev^{tree}
. Тож попередня команда могла бути написана git cat-file -p HEAD^{tree}
. Зверніть увагу, що rev^
означає батьківський rev
. При наявності декількох батьків, rev^1
, rev^2
і т.д. Більш детальна інформація доступна в Rev-синтаксичного аналізу сторінки людини мерзотника .
commit has
означає на початку вашого 3-го абзацу?