Frage Gibt es einen schnellen Git-Befehl, um eine alte Version einer Datei zu sehen?


Gibt es einen Befehl in git zu sehen (entweder auf stdout oder in $PAGER oder $EDITOR) eine bestimmte Version einer bestimmten Datei?


1191
2017-12-03 19:31


Ursprung


Antworten:


Sie können verwenden git show:

$ git show REVISION:path/to/file

Ersetzen Sie REVISION durch Ihre aktuelle Revision (dies könnte ein Git-Commit-SHA, ein Tag-Name, ein Branch-Name, ein relativer Commit-Name oder eine andere Möglichkeit sein, ein Commit in Git zu identifizieren)

Zum Beispiel, um die Version der Datei anzuzeigen src/main.c Vor 4 Commits benutzen Sie:

$ git show HEAD~4:src/main.c

Beachten Sie, dass der Pfad vom Stamm des Repositorys stammt, sofern er nicht mit ./ oder ../ beginnt, um einen relativen Pfad anzugeben. Weitere Informationen finden Sie in der Manpage für git-show.


1330
2017-12-03 19:46



Das folgende Datum sieht so aus:

git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt

Beachten Sie, dass HEAD@{2013-02-25} bedeutet "wo HEAD am 2013-02-25 war" in diesem Repository (unter Verwendung von das Reflog), nicht "das letzte Commit vor 2013-02-25 in diesem Zweig in der Geschichte".


208
2018-03-07 17:05



Wenn Sie GUIs mögen, können Sie gitk verwenden:

  1. Beginne gitk mit:

    gitk /path/to/file
    
  2. Wählen Sie die Revision im oberen Teil des Bildschirms, z. nach Beschreibung oder Datum. Standardmäßig zeigt der untere Teil des Bildschirms das Diff für diese Revision an (entsprechend dem Optionsfeld "Patch").

  3. So zeigen Sie die Datei für die ausgewählte Revision an:

    • Klicken Sie auf das Optionsfeld "Baum". Dadurch wird der Stamm der Dateistruktur bei dieser Revision angezeigt.
    • Drill down zu Ihrer Datei.

98
2017-12-19 18:21



Sie können auch a angeben commit hash (oft auch genannt commit ID) mit dem git show Befehl.


In einer Nussschale

git show <commitHash>:/path/to/file


Schritt für Schritt

  1. Zeigen Sie das Protokoll aller Änderungen für eine bestimmte Datei mit an git log /path/to/file
  2. In der Liste der Änderungen zeigt es die commit hash sowie commit 06c98... (06c98 ... ist der Commit Hash)
  3. Kopiere das commit hash
  4. Führen Sie den Befehl aus git show <commitHash>:/path/to/file Verwendung der commit hashvon Schritt 3 & der path/to/file von Schritt 1.

Hinweis: Hinzufügen der ./ wenn ein relativer Pfad spezifiziert wird, scheint dies wichtig zu sein, d.h. git show b2f8be577166577c59b55e11cfff1404baf63a84:./flight-simulation/src/main/components/nav-horiz.html.


70
2017-11-03 11:21



Zusätzlich zu Jim Hunziker's Antwort,

Sie können die Datei aus der Revision exportieren als

git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt > old_fileInCurrentDirectory.txt

Hoffe das hilft :)


29
2018-04-30 05:07



git log -p zeigt Ihnen nicht nur die Commit-Logs, sondern auch den Unterschied jedes Commits (außer Merge-Commits). Dann können Sie drücken /, geben Sie den Dateinamen ein und drücken Sie enter. Drücken Sie n oder p um zum nächsten / vorherigen Ereignis zu gehen. Auf diese Weise sehen Sie nicht nur die Änderungen in der Datei, sondern auch die Festschreibungsinformationen.


13
2018-05-06 20:02



Sie können ein Skript wie dieses verwenden, um alle Versionen einer Datei in separaten Dateien abzulegen:

z.B.

git_dump_all_versions_of_a_file.sh path/to/somefile.txt

Bekommen das Skript hier als Antwort auf eine andere ähnliche Frage


2
2017-10-30 17:01