Вопрос: Есть ли команда быстрого git для просмотра старой версии файла?


Есть ли команда в git для просмотра (либо сбрасывается в stdout, либо в $PAGERили $EDITOR) конкретную версию конкретного файла?


1162


источник


Ответы:


Вы можете использовать git show:

$ git show REVISION:path/to/file

Например, чтобы просмотреть версию файла src/main.cот 4 комм. назад, используйте:

$ git show HEAD~4:src/main.c

Обратите внимание, что путь находится из корня репозитория, если только он не начинается с ./ или ../, чтобы указать относительный путь. Дополнительную информацию см. На странице руководства для git-show,


1289



Выполнение этого по дате выглядит следующим образом:

git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt

Обратите внимание, что HEAD@{2013-02-25}означает «где HEAD находился в 2013-02-25» в этом хранилище (используя reflog ), а не «последняя фиксация до 2013-02-25 в этой ветке в истории».


205



Если вам нравятся графические интерфейсы, вы можете использовать gitk:

  1. начать gitk с:

    gitk /path/to/file
    
  2. Выберите ревизию в верхней части экрана, например. по описанию или дате. По умолчанию в нижней части экрана отображается разность для этой ревизии (соответствующая переключателю «patch»).

  3. Чтобы просмотреть файл для выбранной версии:

    • Нажмите на кнопку «Дерево». Это покажет корень дерева файлов в этой ревизии.
    • Перейдите к файлу.

98



Вы также можете указать commit hash(часто также называемые commit ID) с git showкоманда ,


В двух словах

git show <commitHash>:/path/to/file


Шаг за шагом

  1. Показать журнал всех изменений для данного файла с помощью git log /path/to/file
  2. В приведенном списке изменений показано, что commit hashтакие как commit 06c98...(06c98 ... являющийся фиксацией фиксации)
  3. Скопируйте commit hash
  4. Запустить команду git show <commitHash>:/path/to/fileиспользуя commit hashшага 3 и path/to/fileшага 1.

Заметка: добавив ./при определении относительного пути представляется важным, т.е. git show b2f8be577166577c59b55e11cfff1404baf63a84:./flight-simulation/src/main/components/nav-horiz.html,


69



В дополнении к Джим Хунцикер ответ,

вы можете экспортировать файл из ревизии как,

git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt > old_fileInCurrentDirectory.txt

Надеюсь это поможет :)


29



git log -pпокажет вам не только журналы фиксации, но и разницу между каждой фиксацией (кроме коммитов). Затем вы можете нажать /, введите имя файла и нажмите enter, Нажмите nили pчтобы перейти к следующему / предыдущему. Таким образом, вы не просто увидите изменения в файле, но также информацию о фиксации.


12



You can use a script like this to dump all the versions of a file to separate files:

e.g.

git_dump_all_versions_of_a_file.sh path/to/somefile.txt

Get the script here as an answer to another similar question


1