Если имя файла a/b/c/f.ext
, оно будет сохранено в коммите как:
- на уровне коммита: дерево, содержащее поддерево с именем
a
- на уровне поддерева с именем
a
: дерево, содержащее поддерево с именем b
- на уровне поддерева с именем
b
: дерево, содержащее поддерево с именем c
- на уровне поддерева с именем
c
: дерево, содержащее BLOB-объект с именем f.ext
Следовательно, сверху мы просто объединяем имена каждого дерева более высокого уровня, чтобы получить фактическое имя файла, a/b/c/f.ext
.
Ничего из этого на самом деле не имеет значения при использовании файла, поскольку важной версией файла является та, которая указана в индексе , и тот называется a/b/c/f.ext
(с косой чертой в имени). Это имеет значение только при чтении деревьев в индекс (git read-tree
) и при записи индекса в ряд деревьев (git write-tree
).