Почему `git diff-tree <tree-ish>` не выводит результат при применении к самой первой фиксации?
Я обычно использую git diff-tree <tree-ish>
с этими параметрами:--no-commit-id --name-status -r
или --no-commit-id --name-only -r
чтобы вывести список добавленных и измененных файлов в конкретном коммите.
Я только что заметил сегодня, что эта команда не выводит результат при применении к самой первой фиксации!.
Так почему и как это преодолеть?
1 ответ
Вероятно, причина в том, что в документации указано:
Когда даны два дерева, он сравнивает первое дерево со вторым. Когда дается одиночный коммит, он сравнивает коммит с его родительскими.
Первая фиксация в репозитории не имеет родителя.
Однако вы можете указать --root
для этой фиксации:
--root
Если указано --root, начальная фиксация будет отображаться как большое событие создания. Это эквивалентно сравнению с деревом NULL.
Обратите внимание, что если вы создаете какой-то сценарий или приложение, которое выводит эти вещи, вам нужно будет определить, что это первая фиксация, добавляя --root
в другом месте не будет того, что вы хотите.
Итак, пока это не дает результата:
git diff-tree -r HASH-OF-FIRST-COMMIT
Это должно сравнить первую фиксацию с пустым деревом:
git diff-tree -r --root HASH-OF-FIRST-COMMIT