Если вы не хотите перезаписывать версию в вашем рабочем дереве, используйте git show
:
git show rev:path/to/file
Обычно rev
- это любое выражение (см. Раздел «Задание редакций» в git-rev-parse (1) ), которое можно преобразовать в коммит 1. .
path/to/file
должен быть путем к файлу интереса (начиная с верхнего уровня хранилища).
Например, показать src/config.c
из фиксации «исправление ошибок»:
% git log --oneline
7c07566 second feature
bbdbea8 fix bugs
1cf42c8 first feature
82cfa1d initial commit
% git show bbdbea8:src/config.c
bbdbea8
также может быть полным именем объекта (bbdbea801c2a465a8c509befa46174bad4fd9fd4
в моем тестовом хранилище) или выражением HEAD~
или HEAD^
(если вы уже знали, что интересующий вас коммит был первым родителем) текущей головы).
1
В синтаксисе rev:path
, rev
не обязательно должен быть «commit-ish», он может быть любым «treeish» (и путь начинается с указанного дерева вместо верхнего уровня).
Git также может сравнивать разные версии файлов без необходимости явно извлекать каждый файл:
Показать кумулятивные изменения, внесенные в src/config.c
с момента bbdbea8:
git diff bbdbea8 -- src/config.c
Или иногда полезно просмотреть историю по крупицам. Показать каждое изменение на src/config.c
, начиная с bbdbea8:
git log -p --reverse bbdbea8.. -- src/config.c