Angenommen, der Hash der gewünschten Übertragung lautet c5f567
:
git checkout c5f567 -- file1/to/restore file2/to/restore
El Git-Checkout Manpage enthält weitere Informationen.
Wenn Sie zu dem Commit zurückkehren wollen, das vor c5f567
, anhängen ~1
(wobei 1 die Anzahl der Commits ist, die Sie zurückgehen wollen, das kann alles sein):
git checkout c5f567~1 -- file1/to/restore file2/to/restore
Nebenbei bemerkt, habe ich mich mit diesem Befehl immer unwohl gefühlt, weil er sowohl für gewöhnliche Dinge (Wechsel zwischen Zweigen) als auch für ungewöhnliche, destruktive Dinge (Verwerfen von Änderungen im Arbeitsverzeichnis) verwendet wird.
Außerdem gibt es eine neue git restore
der speziell für die Wiederherstellung von geänderten Arbeitskopien gedacht ist. Wenn Ihr Git neu genug ist, können Sie diesen Befehl verwenden, aber die Dokumentation enthält eine Warnung:
DIESER BEFEHL IST EXPERIMENTELL. DAS VERHALTEN KANN SICH ÄNDERN.
20 Stimmen
Nach dem Revertieren, nicht vergessen
--cached
bei der Überprüfunggit diff
. Link7 Stimmen
Ich habe Ihre Frage gefunden, als ich meine gegoogelt habe. Aber nachdem ich die Lösung gelesen habe, habe ich mein Log überprüft und herausgefunden, dass ich diese Änderungen als eigenständigen Commit gemacht habe, also habe ich git revert für diesen Commit gemacht, und alles andere blieb so, wie ich es wollte. Das ist keine Lösung, sondern nur ein anderer Weg, es manchmal zu tun.
0 Stimmen
Ich verwende diese manuelle Lösung: $ git revert <commit> dann unstash gewünschte Änderungen dann hochladen diese gewünschten Änderungen in einem neuen Commit.