Щоб завершити власну відповідь, синтаксис справді є
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 2.23+ (серпень 2019 року) ви також можете використовувати, git restore
що замінює заплутану git checkout
команду
git restore -s <SHA1> -- afile
git restore -s somebranch -- afile
Це відновить на робочому дереві лише файл, присутній у "source" ( -s
) фіксації SHA1 або гілці somebranch
.
Щоб відновити також індекс:
git restore -s <SHA1> -SW -- afile
( -SW
: скорочено для --staged --worktree
)
Перед 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-файла, який справді повинен називатися git-cat-object, і просто скидається що об'єкт для stdout.
Примітка: оскільки Git 2.11 (Q4 2016), ви можете застосувати контент-фільтр до git cat-file
виводу!
Див. Команду 3214594 , фіксує 7bcf341 (09 вересня 2016), фіксує 7bcf341 (09 вересня 2016) та виконує b9e62f6 , виконує 16dcc29 (24 серпня 2016) Йоганнеса Шинделіна ( dscho
) .
(Об'єднав Хуніо С Хамано - gitster
- у комітеті 7889ed2 , 21 вересня 2016 р.)
cat-file
: підтримка --textconv
/--filters
в пакетному режимі
Навіть незважаючи на те, що " git hash-objects
" - це інструмент для прийому потоку даних у файловій системі та розміщення його в сховищі об'єктів Git, дозволено здійснювати перетворення "поза світом до Git" (наприклад, перетворення в кінці рядка та додаток чистого фільтра), і він мав функцію за замовчуванням з дуже ранніх днів, у його зворотній роботі " git cat-file
", яка приймає об'єкт із магазину об'єктів Git і екстерналізується для споживання зовнішнім світом, не вистачало механізму, еквівалентного запустіть "Git-to-over-world"
git config diff.txt.textconv "tr A-Za-z N-ZA-Mn-za-m <"
git cat-file --textconv --batch
Примітка: "git cat-file --textconv
" нещодавно почався сегментарний процес (2017), який було виправлено у Git 2.15 (Q4 2017)
Див. Комісію cc0ea7c (21 вересня 2017) Джеффа Кінга ( peff
) .
(Об’єднав Хуніо С Хамано - gitster
- в комітеті bfbc2fc , 28 вересня 2017 р.)
Зауважте, що для заміни / заміни файла з минулим вмістом ви більше не повинні використовувати заплутану git checkout
команду , але git restore
(Git 2.23+, серпень 2019)
git restore -s <SHA1> -- afile
Це відновить на робочому дереві лише файл, присутній у "source" ( -s
) фіксації SHA1.
Щоб відновити також індекс:
git restore -s <SHA1> -SW -- afile
( -SW
: скорочено для --staged --worktree
)
git show
(безпомилково) використовує різні синтаксиси з двокрапкою.git show 2c7cf:my_file.txt