Я удалил файл с помощью Git, а затем зафиксировал его, поэтому файла больше нет в моей рабочей копии. Я хочу просмотреть содержимое этого файла, но не восстановить его. Как я могу это сделать?
Я удалил файл с помощью Git, а затем зафиксировал его, поэтому файла больше нет в моей рабочей копии. Я хочу просмотреть содержимое этого файла, но не восстановить его. Как я могу это сделать?
Ответы:
git show HEAD^:path/to/file
Вы можете использовать явный идентификатор фиксации или HEAD~nпросмотреть более старые версии, или если с тех пор, как вы ее удалили, было более одной фиксации.
fatal: Invalid object name 'HEAD^'.(я должен упомянуть, что у меня только "Initial commit")
Если это файл, который вы удалили некоторое время назад и не хотите искать ревизию , вы можете использовать (файл назван fooв этом примере; вы можете использовать полный путь):
git show $(git rev-list --max-count=1 --all -- foo)^:foo
В rev-listПризыва выглядит для всех редакций , fooно только списки одного. Поскольку rev-listсписки ведутся в обратном хронологическом порядке, то в нем указывается последняя измененная ревизия, fooто есть удаленная фиксация foo. (Это основано на предположении, что git не позволяет изменять удаленный файл и при этом оставаться удаленным.) Вы не можете просто использовать ревизию, которая rev-listвозвращается как есть, потому что там fooбольше не существует. Вы должны запросить тот, который находится непосредственно перед ним, который содержит последнюю версию файла, следовательно, файл ^in git show.
**/fooесли не знаете путь (это будет работать для команды rev-list, но не для команды show. Однако с фиксацией из команды rev-list вы можете найти путь).
Поскольку вы можете не вспомнить точный путь, вместо этого вы можете получить sha1 из журнала git, тогда вы можете просто ввести
git cat-file -p <sha1>
git whatchanged --no-abbrevэто дает результат, аналогичный журналу git (или svn).
path/to/fileэто полный путь от начала проекта (верхний каталог репозитория).