Есть ли в Git команда для просмотра (либо выгрузки в stdout, либо в $PAGER
или $EDITOR
) конкретной версии определенного файла?
1511
Есть ли в Git команда для просмотра (либо выгрузки в stdout, либо в $PAGER
или $EDITOR
) конкретной версии определенного файла?
git checkout <sha1-of-the-commit-you-need>
потомgit checkout HEAD
Ответы:
Вы можете использовать
git show
с путем от корня хранилища (./
или../
для относительного пути):Замените его
REVISION
фактической ревизией (это может быть SHA коммита Git, имя тега, имя ветки, относительное имя коммита или любой другой способ идентификации коммита в Git)Например, чтобы просмотреть версию файла
<repository-root>/src/main.c
от 4 коммитов назад, используйте:Git для Windows требует прямой косой черты даже в путях относительно текущего каталога. Для получения дополнительной информации посетите страницу справочника
git-show
.источник
Делать это по дате выглядит так:
Обратите внимание, что
HEAD@{2013-02-25}
в этом хранилище (где использовался reflog ) означает «где HEAD был 2013-02-25» , а не «последний коммит до 2013-02-25 в этой ветви в истории».источник
master
вместоHEAD@{2013-02-25}
, если вы находитесь на веткеgit log --since='2016-04-28 23:59:59 +0100'
?Если вам нравятся графические интерфейсы, вы можете использовать gitk:
начать гитк с:
Выберите редакцию в верхней части экрана, например, по описанию или дате. По умолчанию в нижней части экрана отображается разница для этой ревизии (в соответствии с переключателем «patch»).
Чтобы просмотреть файл для выбранной ревизии:
источник
gitk REVISION /path/to/file
. Это может пригодиться, если вы хотите проверить, например, с определенной версией.Вы также можете указать
commit hash
(часто также вызываетсяcommit ID
) с помощьюgit show
команды .В двух словах
git show <commitHash>:/path/to/file
Шаг за шагом
git log /path/to/file
commit hash
например,commit 06c98...
(06c98 ... хеш коммита)commit hash
git show <commitHash>:/path/to/file
используяcommit hash
шаг 3 иpath/to/file
шаг 1.Примечание: добавляя
./
при указании относительного пути представляется важным, то естьgit show b2f8be577166577c59b55e11cfff1404baf63a84:./flight-simulation/src/main/components/nav-horiz.html
.источник
git show <SHA1> --name-only
для получения.В дополнение к ответу Джима Хунзикера ,
Вы можете экспортировать файл из ревизии как,
Надеюсь это поможет :)
источник
Чтобы быстро увидеть различия со старыми ревизиями файла:
источник
git log -p
покажет вам не только логи коммитов, но и различия каждого коммита (кроме коммитов слияния). Затем вы можете нажать/
, введите имя файла и нажмитеenter
. Нажмитеn
или,p
чтобы перейти к следующему / предыдущему вхождению. Таким образом, вы увидите не только изменения в файле, но и информацию о фиксации.источник
git log -pm
будет также показывать слияния коммитов.git log -p -- filename.txt
чтобы ограничить историю только желаемым файлом.Вы можете использовать такой скрипт, чтобы вывести все версии файла в отдельные файлы:
например
Получите скрипт здесь как ответ на другой похожий вопрос
источник
git_root
,git_log_short
Иgit_log_message_for_commit
не хватает.ПУТЬ 1: (Я предпочитаю этот путь)
git reflog
git diff-tree --no-commit-id --name-only -r <commitHash>
git show <commitHash>:/path/to/file
ПУТЬ 2:
git reflog
git reset --hard %commit ID%
источник
Помощник для извлечения нескольких файлов из данной ревизии
При попытке разрешить конфликты слияния этот помощник очень полезен:
GitHub вверх по течению .
Применение:
Результат: следующие содержат альтернативные версии файлов:
Таким образом, вы сохраняете расширение файла, чтобы ваш редактор не жаловался и мог легко найти старый файл рядом с новым.
источник