Um Ihre eigene Antwort zu vervollständigen, lautet die Syntax in der Tat
git show object
git show $REV:$FILE
git show somebranch:from/the/root/myfile.txt
git show HEAD^^^:test/test.py
Der Befehl verwendet den üblichen Revisionsstil, dh Sie können eine der folgenden Optionen verwenden:
- Zweignamen (wie vorgeschlagen durch Asche )
HEAD
+ x Anzahl der ^
Zeichen
- Der SHA1-Hash einer bestimmten Revision
- Die ersten paar (vielleicht 5) Zeichen eines bestimmten SHA1-Hash
Tipp Beachten Sie, dass Sie bei Verwendung von " git show
" immer einen Pfad aus dem Stammverzeichnis des Repositorys angeben müssen , nicht Ihre aktuelle Verzeichnisposition.
(Obwohl Mike Morearty erwähnt, dass Sie zumindest mit git 1.7.5.4 einen relativen Pfad angeben können, indem Sie " ./
" am Anfang des Pfads einfügen - zum Beispiel:
git show HEAD^^:./test.py
)
Mit Git 2.23+ (August 2019) können Sie auch den verwirrenden Befehlgit restore
ersetzengit checkout
git restore -s <SHA1> -- afile
git restore -s somebranch -- afile
Das würde im Arbeitsbaum nur die Datei wiederherstellen, die in der "source" ( -s
) - Festschreibung von SHA1 oder Zweig vorhanden ist somebranch
.
So stellen Sie auch den Index wieder her:
git restore -s <SHA1> -SW -- afile
( -SW
: kurz für --staged --worktree
)
Vor git1.5.x wurde dies mit einigen Sanitärinstallationen durchgeführt:
git ls-tree <rev>
Zeigen Sie eine Liste eines oder mehrerer "Blob" -Objekte innerhalb eines Commits an
git cat-file blob <file-SHA1>
cat eine Datei, wie sie innerhalb einer bestimmten Revision festgeschrieben wurde (ähnlich wie bei svn cat). Verwenden Sie git ls-tree, um den Wert einer bestimmten Datei-sha1 abzurufen
git cat-file -p $(git-ls-tree $REV $file | cut -d " " -f 3 | cut -f 1)::
git-ls-tree listet die Objekt-ID für $ file in Revision $ REV auf. Diese wird aus der Ausgabe herausgeschnitten und als Argument für git-cat-file verwendet, die eigentlich als git-cat-object bezeichnet werden sollte, und wird einfach ausgegeben das Objekt zu stdout.
Hinweis: Seit Git 2.11 (Q4 2016) können Sie einen Inhaltsfilter auf die git cat-file
Ausgabe anwenden !
Siehe Commit 3214594 , Commit 7bcf341 ( 09.09.2016 ), Commit 7bcf341 ( 09.09.2016 ) und Commit b9e62f6 , Commit 16dcc29 (24. August 2016) von Johannes Schindelin ( dscho
) .
(Zusammengeführt von Junio C Hamano - gitster
- in Commit 7889ed2 , 21. September 2016)
cat-file
: support --textconv
/ --filters
im Batch-Modus
Obwohl " git hash-objects
", ein Tool zum Aufnehmen eines Datenstroms im Dateisystem, der in den Git-Objektspeicher gestellt wird, die Konvertierungen von "Außenwelt zu Git" (z. B. Konvertierungen am Ende der Zeile und Anwendung) durchführen darf des Clean-Filters), und die Funktion war von Anfang an standardmäßig aktiviert. Bei der umgekehrten Operation " git cat-file
", bei der ein Objekt aus dem Git-Objektspeicher entnommen und für den Verbrauch durch die Außenwelt ausgelagert wird, fehlte ein gleichwertiger Mechanismus Führen Sie die "Git-to-Outside-World"
git config diff.txt.textconv "tr A-Za-z N-ZA-Mn-za-m <"
git cat-file --textconv --batch
Hinweis: " git cat-file --textconv
" hat vor kurzem (2017) mit dem Segfaulting begonnen, was in Git 2.15 (Q4 2017) korrigiert wurde.
Siehe Commit cc0ea7c (21. September 2017) von Jeff King ( peff
) .
(Zusammengeführt von Junio C Hamano - gitster
- in Commit bfbc2fc , 28. September 2017)
Beachten Sie, dass Sie zum Überschreiben / Ersetzen einer Datei durch einen früheren Inhalt den verwirrenden git checkout
Befehl nicht mehr verwenden sollten, sondern git restore
(Git 2.23+, August 2019).
git restore -s <SHA1> -- afile
Das würde im Arbeitsbaum nur die Datei wiederherstellen, die im "source" ( -s
) Commit SHA1 vorhanden ist.
So stellen Sie auch den Index wieder her:
git restore -s <SHA1> -SW -- afile
( -SW
: kurz für --staged --worktree
)
git show
(nicht hilfreich) verwendet eine andere Syntax mit einem Doppelpunkt.git show 2c7cf:my_file.txt