Использование git show
Чтобы завершить свой собственный ответ, синтаксис действительно
git show object
git show $REV:$FILE
git show somebranch:from/the/root/myfile.txt
git show HEAD^^^:test/test.py
Команда использует обычный стиль редактирования, то есть вы можете использовать любое из следующего:
- имя ветки (как предложено ясень)
HEAD
+ x количество ^
символов
- Хеш SHA1 данной ревизии
- Первые несколько (возможно, 5) символов данного хэша SHA1
Совет. Важно помнить, что при использовании git show
всегда указывайте путь от корня репозитория, а не текущую позицию в каталоге.
(Хотя Майк Морарти упоминает, что, по крайней мере, с git 1.7.5.4, вы можете указать относительный путь, поместив ./
в начале пути. Например:
git show HEAD^^:./test.py
)
Использование git restore
В Git 2.23+ (август 2019 г.) вы также можете использовать git restore
< / strong>, который заменяет запутанную команду git checkout
git restore -s <SHA1> -- afile
git restore -s somebranch -- afile
Это восстановит в рабочем дереве только файл, который присутствует в исходном (-s
) коммите SHA1 или ветке somebranch
.
Чтобы восстановить также индекс:
git restore -s <SHA1> -SW -- afile
(-SW
: сокращение от --staged --worktree
)
Как указано в комментарии от starwarswii
Он позволяет вам передать содержимое в файл, что отлично, если вы хотите просто быстро сравнить файлы из фиксации.
Например. ты можешь сделать:
git show 1234:path/to/file.txt > new.txt
git show 1234~:path/to/file.txt > old.txt
затем сравните их.
Использование низкоуровневых сантехнических команд git
До git1.5.x это было сделано с помощью сантехники:
git ls-tree <rev>
показать список из одного или нескольких объектов blob в коммите
git cat-file blob <file-SHA1>
cat файл, поскольку он был зафиксирован в определенной ревизии (аналогично svn cat). используйте git ls-tree
, чтобы получить значение заданного файла-sha1
git cat-file -p $(git-ls-tree $REV $file | cut -d " " -f 3 | cut -f 1)::
git-ls-tree
перечисляет идентификатор объекта для $file
в ревизии $REV
, он вырезается из вывода и используется в качестве аргумента для git-cat-file
, который на самом деле должен называться git-cat-object
, и просто выгружает этот объект в stdout
.
Примечание. Начиная с Git 2.11 (4 квартал 2016 г.), вы можете применять фильтр содержимого к выводу git cat-file
.
См. совершить 3214594, совершить 7bcf341 (9 сентября 2016 г.), совершить 7bcf341 (09 сентября 2016 г.) и зафиксировать b9e >, совершить 16dcc29 (24 августа 2016 г.) Johannes Schindelin (dscho
).
(Объединено Junio C Hamano - gitster
- в commit 7889ed2, 21 сентября 2016 г.)
git config diff.txt.textconv "tr A-Za-z N-ZA-Mn-za-m <"
git cat-file --textconv --batch
Примечание: git cat-file --textconv
недавно начал segfaulting (2017 г.), который был исправлен в Git 2.15 (4 квартал 2017 г.)
См. commit cc0ea7c (21 сентября 2017 г.) от Джефф Кинг (peff
).
(Объединено с помощью Junio C Hamano - gitster
- в совершить bfbc a>, 28 сен 2017)
person
VonC
schedule
04.03.2009
git show
(бесполезно) использует другой синтаксис с двоеточием.git show 2c7cf:my_file.txt
- person Steve Bennett   schedule 30.05.2012>
- person Konstantin Pelepelin   schedule 20.11.2013git restore
, а неgit checkout
. См. мой отредактированный ответ. - person VonC   schedule 06.11.2019