Есть ли команда в Git, чтобы увидеть (выведены в поток stdout, или в $пейджер
или $редактор
) конкретная версия конкретного файла?
Вы можете использовать Git в шоу
:
$ git show REVISION:path/to/file
Заменить пересмотра с ваш фактический пересмотр (может быть коммит в git'е, ша, имя тега, название филиала, относительной фиксации именем, или любым другим способом определения коммит в Git)
Например, для просмотра версии файла src/главная.C
с 4 коммитов назад, использовать:
$ git show HEAD~4:src/main.c
Обратите внимание, что путь от корня репозитория, если он начинается с ./ или ../, чтобы указать относительный путь. Git для Windows требует Слэш даже в пути относительно текущего каталога. Для получения дополнительной информации, проверьте Man-страницу для ГИТ-шоу
.
Это дата выглядит так:
git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt
Обратите внимание, что голова@{2013-02-25}
означает "где голова была на 2013-02-25" в этот репозиторий (с помощью reflog), а не на "последний коммит до 2013-02-25 в этой ветке в историю и".
Если вы любите GUI, вы можете использовать гифок:
гифок /путь/к/файлу
Выберите ревизию в верхней части экрана, например по описанию или дата. По умолчанию в нижней части экрана показывает разницу для той ревизии, (что соответствует в "патч" и радио-кнопки).
Чтобы увидеть файл для выбранной редакции:
Вы также можете указать совершить хэш
(часто называемые также идентификатором
) с помощью команды ГИТ шоу
.
ГИТ показать <commitHash>:/путь/к/файлу
журнале git /путь/к/файлу
git в шоу <commitHash>:/путь/к/файлу
с помощью совершить хэш-о'Шаг 3 &ампер;
путь/к/файлу` Шаг 1.Примечание: добавление ./
при указании относительного пути представляется важным, т. е. ГИТ показать b2f8be577166577c59b55e11cfff1404baf63a84:./flight-simulation/src/main/components/nav-horiz.html`.
В дополнение к Джим Хунцикер'ы ответьте,
вы можете экспортировать файл из редакции, как,
git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt > old_fileInCurrentDirectory.txt
Надеюсь, что это помогает :)
журнал -стр. ГИТ
покажет вам не только совершить бревна, но и различий каждого коммита (за исключением слияния коммитов). Затем вы можете нажать /
, введите имя файла и нажмите Enter
. Нажмите " N " или "P", чтобы перейти к следующему/предыдущему происшествия. Таким образом, вы не только увидеть изменения в файле, но и фиксация информации.
Чтобы быстро увидеть различия со старыми версиями файла:
ГИТ показывают -1 filename.txt в
> Для сравнения с последнего изменения файла
ГИТ шоу -2 filename.txt в
> Для сравнения с 2-й последней редакции
ГИТ шоу -3 fielname.txt в
> Для сравнения с 3-й последней редакции
Можно использовать такой скрипт для сброса всех версий файла в отдельные файлы:
например
git_dump_all_versions_of_a_file.sh path/to/somefile.txt
Получить сценарий здесь как ответ на другой подобный вопрос
Помощник, чтобы получить несколько файлов с заданной ревизии
При попытке разрешения конфликтов слияния, этот помощник очень полезен:
#!/usr/bin/env python3
import argparse
import os
import subprocess
parser = argparse.ArgumentParser()
parser.add_argument('revision')
parser.add_argument('files', nargs='+')
args = parser.parse_args()
toplevel = subprocess.check_output(['git', 'rev-parse', '--show-toplevel']).rstrip().decode()
for path in args.files:
file_relative = os.path.relpath(os.path.abspath(path), toplevel)
base, ext = os.path.splitext(path)
new_path = base + '.old' + ext
with open(new_path, 'w') as f:
subprocess.call(['git', 'show', '{}:./{}'.format(args.revision, path)], stdout=f)
Использование:
git-show-save other-branch file1.c path/to/file2.cpp
Итог: следующие содержит альтернативные версии файлов:
file1.old.c
path/to/file2.old.cpp
Таким образом, вы сохранить расширение файла, так что ваш редактор выиграл'т жаловаться, и легко может найти старый файл рядом с новой.