Просмотр удалённого файла в Git

Я удалил файл с Git и затем зафиксировал его, поэтому файл больше не работает в моей рабочей копии. Я хочу посмотреть содержимое этого файла, но на самом деле не восстановить его. Как я могу это сделать?

Ответ 1

git show HEAD^:path/to/file

Вы можете использовать явный идентификатор фиксации или HEAD~n для просмотра более старых версий или если с момента его удаления было более одного фиксации.

Ответ 2

Если это файл, который вы удалили некоторое время назад, а не хотите искать версию, вы можете использовать (в этом примере файл имеет имя foo; вы можете используйте полный путь):

git show $(git rev-list --max-count=1 --all -- foo)^:foo

В вызове rev-list отображаются все изменения foo, но отображается только один. Поскольку rev-list перечисляет в обратном хронологическом порядке, то то, что он перечисляет, является последней ревизией, которая изменила foo, которая была бы фиксацией, удаленной foo. (Это основано на предположении, что git не позволяет удаленному файлу быть изменен и все же остается удаленным.) Вы не можете просто использовать версию, которая rev-list возвращает как-есть, потому что foo больше не существует. Вы должны попросить тот, который находится перед ним, который содержит последнюю ревизию файла, поэтому ^ в git show.

Ответ 3

Так как вы можете не вспомнить точный путь, вы можете вместо этого получить sha1 из журнала git, тогда вы можете просто выпустить

 git cat-file -p <sha1>