Was git-revert erzeugt einen Commit, der die Änderungen eines bestimmten Commits rückgängig macht und einen Commit erzeugt, der umgekehrt (nun ja, reziprok) zu einem bestimmten Commit ist. Daher
git revert <SHA-1>
sollte funktionieren und tut es auch.
Wenn Sie zu einem bestimmten Commit zurückspulen wollen, und das können Sie, weil dieser Teil der Geschichte noch nicht veröffentlicht wurde, müssen Sie git-reset , nicht git-revert:
git reset --hard <SHA-1>
(Beachten Sie, dass --hard
würde dazu führen, dass Sie alle nicht übertragenen Änderungen im Arbeitsverzeichnis verlieren).
Zusätzliche Hinweise
Übrigens, vielleicht ist es nicht offensichtlich, aber überall dort, wo in der Dokumentation steht <commit>
o <commit-ish>
(oder <object>
), können Sie eine SHA-1 Kennung (vollständig oder verkürzt) der Übergabe.
1 Stimmen
Auch wenn diese Frage älter ist als die Frage, die jetzt als Duplikat markiert ist, hat diese eine bessere Antwort. meta.stackexchange.com/questions/147643/
20 Stimmen
Diese Frage und die oberste Antwort hier können Git-Benutzer verwirren. Nur zum besseren Verständnis der Terminologie: Sie brauchen nicht zurückkehren zu eine Verpflichtung. Sie können entweder zurückgesetzt auf eine Übergabe (das ist wie eine Zeitreise mit der Zeitmaschine) oder zurückkehren einen Commit (das ist so, als ob man einen Commit zurückziehen würde, als ob er nie existiert hätte - allerdings bleibt die Revert-Information in der Historie erhalten, so dass man einen Revert wieder rückgängig machen kann, wenn man das möchte) Beachten Sie auch, dass Sie nicht das m-Flag verwenden und eine Commit-Nachricht eingeben sollten, wenn Sie während des Prozesses Konflikte bekommen. Die automatische Meldung, die Git liefert, ist informativer, wenn man in der Historie zurückblickt.
1 Stimmen
@alexrogins Was bedeutet es, einen Commit zurückzuziehen, als hätte er nie existiert? Ich bin mir auch nicht sicher, was "Revert a revert" bedeutet - ich schätze den Kommentar, gute Informationen, ich suche nur nach mehr Details über Ihre Perspektive.
2 Stimmen
@Joe Wenn Sie eine Codezeile hinzufügen und diese Zeile dann committen, würden Sie diese Codezeile rückgängig machen (egal, wo in der Geschichte sie zuerst geschrieben wurde, es muss nicht der letzte Commit sein), wenn Sie sie zurücknehmen. Das macht dann einen Revert-Commit. Wenn Sie den Revert-Commit rückgängig machen, dann machen Sie im Grunde den Undo rückgängig (d.h. Sie machen die ursprüngliche Zeile noch einmal).