Gibt es in Git einen Befehl zum Anzeigen (entweder in stdout oder in $PAGER
oder $EDITOR
) einer bestimmten Version einer bestimmten Datei?
1509
Gibt es in Git einen Befehl zum Anzeigen (entweder in stdout oder in $PAGER
oder $EDITOR
) einer bestimmten Version einer bestimmten Datei?
git checkout <sha1-of-the-commit-you-need>
, danachgit checkout HEAD
Antworten:
Sie können
git show
mit einem Pfad aus dem Stammverzeichnis des Repositorys (./
oder../
für die relative Pfadbildung) Folgendes verwenden:Durch
REVISION
Ihre tatsächliche Revision ersetzen (kann ein Git-Commit-SHA, ein Tag-Name, ein Zweigname, ein relativer Commit-Name oder eine andere Methode zum Identifizieren eines Commits in Git sein).<repository-root>/src/main.c
Verwenden Sie beispielsweise Folgendes, um die Version der Datei von vor 4 Commits anzuzeigen :Git für Windows erfordert Schrägstriche auch in Pfaden relativ zum aktuellen Verzeichnis. Weitere Informationen finden Sie in der Manpage für
git-show
.quelle
Dies nach Datum zu tun sieht folgendermaßen aus:
Beachten Sie, dass
HEAD@{2013-02-25}
in diesem Repository (unter Verwendung des Reflogs ) "wo HEAD am 25.02.2013 war" bedeutet , nicht "das letzte Commit vor dem 25.02.2013 in diesem Zweig in der Geschichte".quelle
master
stattHEAD@{2013-02-25}
, wenn Sie auf einem Zweig sindgit log --since='2016-04-28 23:59:59 +0100'
angeben?Wenn Sie GUIs mögen, können Sie gitk verwenden:
starte gitk mit:
Wählen Sie die Revision im oberen Teil des Bildschirms, z. B. nach Beschreibung oder Datum. Standardmäßig zeigt der untere Teil des Bildschirms den Unterschied für diese Revision (entsprechend dem Optionsfeld "Patch").
So zeigen Sie die Datei für die ausgewählte Revision an:
quelle
gitk REVISION /path/to/file
. Dies kann nützlich sein, wenn Sie beispielsweise mit einer bestimmten Version vergleichen möchten.Sie können mit dem Befehl auch eine
commit hash
(häufig auch aufgerufenecommit ID
) angeben .git show
In einer Nussschale
git show <commitHash>:/path/to/file
Schritt für Schritt
git log /path/to/file
commit hash
solche wiecommit 06c98...
(06c98 ... als Commit-Hash) angezeigt.commit hash
git show <commitHash>:/path/to/file
mitcommit hash
Schritt 3 undpath/to/file
Schritt 1 aus.Hinweis: Das Hinzufügen des
./
bei Angabe eines relativen Pfads erscheinenden Pfads scheint wichtig zu sein, dgit show b2f8be577166577c59b55e11cfff1404baf63a84:./flight-simulation/src/main/components/nav-horiz.html
. H.quelle
git show <SHA1> --name-only
, um ihn abzurufen.Zusätzlich zu Jim Hunzikers Antwort
Sie können die Datei aus der Revision exportieren als:
Hoffe das hilft :)
quelle
So erkennen Sie schnell die Unterschiede zu älteren Revisionen einer Datei:
quelle
git log -p
zeigt Ihnen nicht nur die Festschreibungsprotokolle, sondern auch die Unterschiede der einzelnen Festschreibungen (mit Ausnahme der Festschreibungs-Festschreibungen). Dann können Sie drücken/
, Dateinamen eingeben und drückenenter
. Drücken Sien
oderp
, um zum nächsten / vorherigen Ereignis zu gelangen. Auf diese Weise sehen Sie nicht nur die Änderungen in der Datei, sondern auch die Festschreibungsinformationen.quelle
git log -pm
würde auch Merge-Commits angezeigt.git log -p -- filename.txt
, um den Verlauf nur auf die gewünschte Datei zu beschränken.Mit einem solchen Skript können Sie alle Versionen einer Datei in separate Dateien sichern:
z.B
Holen Sie sich das Skript hier als Antwort auf eine andere ähnliche Frage
quelle
git_root
,git_log_short
Undgit_log_message_for_commit
fehlen.WEG 1: (Ich bevorzuge diesen Weg)
git reflog
git diff-tree --no-commit-id --name-only -r <commitHash>
git show <commitHash>:/path/to/file
WEG 2:
git reflog
git reset --hard %commit ID%
quelle
Hilfsprogramm zum Abrufen mehrerer Dateien aus einer bestimmten Revision
Wenn Sie versuchen, Zusammenführungskonflikte zu lösen, ist dieser Helfer sehr nützlich:
GitHub stromaufwärts .
Verwendungszweck:
Ergebnis: Die folgenden Versionen enthalten die alternativen Versionen der Dateien:
Auf diese Weise behalten Sie die Dateierweiterung bei, damit sich Ihr Editor nicht beschwert und die alte Datei direkt neben der neueren Datei leicht findet.
quelle