Команда log принимает набор коммитов и путь.В первой форме вы указываете путь и набор по умолчанию для коммитов - HEAD (все коммиты достижимы из HEAD).Во второй форме вы даете ему идентификатор объекта, который не называет коммит, но также не является путем, поэтому он ничего не может сделать.
Вам нужно дать ему набор коммитов и путь:
- Набор коммитов, содержащий только один коммит, равен
commitish^!
.Так что в вашем случае HEAD^!
. - Путь по-прежнему просто
file1.txt
Так что используйте:
git log --raw HEAD^! file1.txt
Конечно (как J-16 SDiZправильно указано) лучше использовать git ls-tree
, который предназначен для этой цели, чем злоупотреблять git log
.Так что это будет:
git ls-tree HEAD file1.txt
в отличие от log
, ls-tree
принимает древовидную структуру (для которой коммит является особым случаем), поэтому вам не нужно добавлять смешные суффиксы, такие как ^!
.