Aby uzupełnić własną odpowiedź, składnia jest rzeczywiście
git show object
git show $REV:$FILE
git show somebranch:from/the/root/myfile.txt
git show HEAD^^^:test/test.py
Polecenie przyjmuje zwykły styl zmiany, co oznacza, że możesz użyć dowolnej z następujących opcji:
- Nazwa oddziału (jako sugerowane przez popiół )
HEAD
+ x liczba ^
znaków
- Skrót SHA1 danej wersji
- Kilka pierwszych (może 5) znaków danego skrótu SHA1
Wskazówka Ważne jest, aby pamiętać, że używając „ git show
”, zawsze określ ścieżkę z katalogu głównego repozytorium , a nie bieżącą pozycję katalogu.
(Chociaż Mike Morearty wspomina, że przynajmniej w git 1.7.5.4 można określić ścieżkę względną, umieszczając „ ./
” na początku ścieżki - na przykład:
git show HEAD^^:./test.py
)
W Git 2.23+ (sierpień 2019 r.) Możesz także użyć, git restore
który zastępuje mylące git checkout
polecenie
git restore -s <SHA1> -- afile
git restore -s somebranch -- afile
Spowodowałoby to przywrócenie w działającym drzewie tylko pliku obecnego w zatwierdzeniu SHA1 lub gałęzi „source” ( -s
)somebranch
.
Aby przywrócić również indeks:
git restore -s <SHA1> -SW -- afile
( -SW
: skrót od --staged --worktree
)
Przed git1.5.x zrobiono to z pewną instalacją:
git ls-tree <rev>
pokaż listę jednego lub więcej obiektów „obiektów blob” w zatwierdzeniu
git cat-file blob <file-SHA1>
cat plik, ponieważ został zatwierdzony w ramach określonej wersji (podobnie jak svn cat). użyj git ls-tree, aby pobrać wartość danego pliku-sha1
git cat-file -p $(git-ls-tree $REV $file | cut -d " " -f 3 | cut -f 1)::
git-ls-tree wyświetla identyfikator obiektu dla pliku $ w wersji $ REV, jest on wycinany z danych wyjściowych i używany jako argument do pliku git-cat, który tak naprawdę powinien być nazwany git-cat-object, i po prostu zrzuca ten obiekt na standardowe wyjście.
Uwaga: od wersji Git 2.11 (IV kwartał 2016 r.) Można zastosować filtr zawartości do danych git cat-file
wyjściowych!
Zobacz zatwierdzenie 3214594 , zatwierdzenie 7bcf341 (09 września 2016 r.), Zatwierdzenie 7bcf341 (09 września 2016 r.) I zatwierdzenie b9e62f6 , zatwierdzenie 16dcc29 (24 sierpnia 2016 r.) Przez Johannesa Schindelina ( dscho
) .
(Połączone przez Junio C Hamano - gitster
- w commit 7889ed2 , 21 września 2016)
cat-file
: wsparcie --textconv
/ --filters
w trybie wsadowym
Chociaż „ git hash-objects
”, które jest narzędziem do pobierania strumienia danych z systemu plików i umieszczania go w magazynie obiektów Git, pozwoliło na konwersję „poza światem do Git” (np. Konwersje i aplikacja na końcu linii z czystym filtrem) i miał on domyślnie włączoną funkcję od bardzo wczesnych dni, jej odwrotna operacja „ git cat-file
”, która pobiera obiekt ze składnicy obiektów Git i przekazuje na zewnątrz do konsumpcji przez świat zewnętrzny, nie posiadała mechanizmu równoważnego z uruchom „Git-to-outside-world”
git config diff.txt.textconv "tr A-Za-z N-ZA-Mn-za-m <"
git cat-file --textconv --batch
Uwaga: „ git cat-file --textconv
” zaczął segfaulting niedawno (2017), co zostało poprawione w Git 2.15 (IV kwartał 2017)
Zobacz commit cc0ea7c (21 września 2017 r.) Autor: Jeff King ( peff
) .
(Połączone przez Junio C Hamano - gitster
- in commit bfbc2fc , 28 września 2017)
Pamiętaj, że aby zastąpić / zastąpić plik z zawartością z przeszłości, nie powinieneś już używać mylącego git checkout
polecenia , ale git restore
(Git 2.23+, sierpień 2019)
git restore -s <SHA1> -- afile
Spowodowałoby to przywrócenie w działającym drzewie tylko pliku obecnego w -s
zatwierdzeniu SHA1 „source” ( ).
Aby przywrócić również indeks:
git restore -s <SHA1> -SW -- afile
( -SW
: skrót od --staged --worktree
)
git show
(nieprzydatnie) używa innej składni z dwukropkiem.git show 2c7cf:my_file.txt