Объект коммита - это объект, который ссылается на дерево и связывает с ним другие метаданные (автор, коммиттер, метки времени и т. Д.).
Commit
/ \
/ \
(parent SHA) Tree
(author) / \
(committer) Blob Blob
(timestamps)
(etc)
Несколько объектов фиксации могут ссылаться на одно и то же дерево (если состояние файлов в каждом коммите идентично).
Например, если два человека внесут одно и то же изменение в файл и зафиксируют его, это приведет к двум разным объектам фиксации (поскольку метки времени и авторы будут различаться). Однако, поскольку конечным результатом является одинаковое содержимое файла, обе фиксации будут указывать на одно и то же дерево.
Когда вы запускаете git ls-tree
в коммите SHA, он автоматически использует дерево SHA, на которое ссылается этот коммит.