Sagen Sie, ich habe eine Datei bearbeitet
%Vor%Jetzt mache ich zusätzliche Änderungen an den Dateien
%Vor%Frage: Wie stelle ich die letzte gestaffelte Version wieder her? Ist dies möglich, da es nicht begangen wurde?
Sie können das wahrscheinlich tun, aber es gibt keinen einzigen einfachen Befehl, um es für Sie zu tun.
Wenn Sie git add
ausführen, wurde die Datei bereits zum Repository hinzugefügt, aber es gibt derzeit nichts, was auf sie zeigt, außer dem Index. Wenn Sie eine zweite git add
ausführen, wird die neue (Version der) Datei zum Repository hinzugefügt, und die Verknüpfung zwischen dem Index und der ersten Version der Datei wird durch die neue Verknüpfung ersetzt. Aber das erste Objekt ist immer noch da.
Sie können git fsck --dangling
verwenden, um eine Liste von Blob-Objekten in Ihrem Repository zu erhalten, auf die zur Zeit nichts referenziert wird, die Sie dann aber nacheinander mit git show
, git cat-file
usw. durchgehen müssen um festzustellen, welche Datei Sie haben möchten. Sobald Sie die richtige Datei gefunden haben, können Sie git show HASH > somefile.txt
(und vielleicht git add somefile.txt
).
Natürlich, wenn Sie git prune
, git gc
usw. seit dem zweiten git add
gemacht haben, was möglicherweise die ursprüngliche Datei aus Ihrem Repository entfernt hat.
Hier ist ein kurzes Beispiel:
%Vor%Sie können das nicht tun. Git kann Dateien nur auf eine vorherige commit zurücksetzen, nicht auf eine frühere Version. Dies liegt daran, dass die Datei erst in das Repository von git aufgenommen wird, wenn Sie das Commit durchgeführt haben. (Sie können mehr über Best Practices in Coding Horror lesen )
Vielleicht können Sie die undo
-Schaltfläche sinnvoll anwenden? (Wenn Sie den Code in einem Editor bearbeitet haben, hat offensichtlich echo
ing an die Datei kein Rückgängigmachen).
Sie meinen, Sie möchten zu der gestaffelten Version zurückkehren? Ja, das kannst du definitiv tun. Der einfachste Weg besteht darin, die Änderungen, die Sie vorgenommen haben, zu übernehmen, die Datei von diesem Commit zu checken und dann Ihren Zweig zurückzusetzen:
%Vor%Bearbeiten: Hoppla, tut mir leid, ich habe den Teil nicht bemerkt, in dem Sie die Datei mit den neuen Änderungen neu erstellt haben. Entschuldigung, aber die anderen Antworten sind korrekt: das ist nicht möglich (oder zumindest , nicht sehr einfach). Ich werde diese Antwort aufheben, nur für den Fall, dass jemand anderes ein ähnliches Problem hat, aber den Cache noch nicht überschrieben hat.
Tags und Links git