Ich habe die Datei " main.cpp
" in meinem Editor geöffnet.
Ich möchte die vorherige Version von " main.cpp
" auch im Editor sehen.
Die Art, wie ich es jetzt mache, ist so.
close "main.cpp" in the editor
prompt> mv main.cpp tmp
prompt> git checkout HEAD^ main.cpp
prompt> mv main.cpp old_main.cpp
prompt> mv tmp main.cpp
prompt>
open "main.cpp" and "old_main.cpp" in the editor
Kann es vereinfacht werden, damit ich "main.cpp" nicht im Editor schließen muss?
Was ich mir erhoffe, ist eine Variante git-checkout
, die dies kann.
UPDATE: Ich benutze Git unter Mac OS 10.5.7
prompt> git --version
git version 1.6.0.4
prompt>
UPDATE2: Jakub Narębski antwortet:
prompt> git show HEAD^:dir1/dir2/dir3/main.cpp > old_main.cpp
prompt>
UPDATE3: Karmis Antwort für eine bestimmte Revision:
prompt> git show 4c274dd91dc:higgs/Higgs.xcodeproj/project.pbxproj > old_project.pbxproj
prompt>
Antworten:
Sie können dafür "git show" verwenden:
(Beachten Sie, dass
:
zwischenHEAD^
und ein Doppelpunkt [ ] stehtmain.cpp
.) Die<revision>:<path>
Syntax wird in der git rev-parse- Manpage vor dem letzten Punkt im Abschnitt "Festlegen von Revisionen" beschrieben:Beachten Sie, dass
<path>
hier der vollständige Pfad relativ zum obersten Verzeichnis Ihres Projekts angegeben ist, dh zum Verzeichnis mit dem.git/
Verzeichnis. (Oder genauer gesagt " <revision> " (was im Allgemeinen ein beliebiger <tree-ish> sein kann , dh etwas, das einen Baum darstellt))Wenn Sie den Pfad relativ zum aktuellen Verzeichnis verwenden möchten, müssen Sie die
./<path>
Syntax verwenden (oder../path
vom aktuellen Verzeichnis aufsteigen).Bearbeiten 2015-01-15: Informationen zur relativen Pfadsyntax hinzugefügt
In den meisten Fällen können Sie dieselbe Ausgabe mit dem
git cat-file
Befehl " Low-Level" (Sanitär) erzielen:quelle
Nur um Jakubs Antwort zu ergänzen: Sie müssen die Ausgabe nicht einmal in eine Datei mit umleiten
>
, wenn Sie nur den Dateiinhalt im Terminal überfliegen möchten. Du kannst einfach rennen$ git show 58a3db6:path/to/your/file.txt
.quelle