Wie wird git revert
verwendet?
Dies mag sich wie eine doppelte Frage anhören, aber wenn Leute sie stellen, lautet die Antwort häufig: Verwenden Sie git reset
gemäß Zurücksetzen auf ein Commit durch einen SHA-Hash in Git?
Wenn dann jemand fragt, wie man git reset
Leute benutzt, antworten Sie, dass Sie git revert
gemäß Git verwenden sollen - wie man zurückrollt
Bevor Sie es wissen, erschienen 8 verschiedene Personen mit ihren eigenen einzigartigen Methoden, um den Arsch des OP zu retten, was alles über Ihrem Kopf liegt.
Versuchen wir also, den Auftrag beizubehalten und einen Dummies-Leitfaden zu schreiben git revert
.
Ein Szenario: Sie haben sich zweimal verpflichtet, zu meistern, und es ist schlecht. Sie haben gepusht und andere Leute haben Ihre schlechten Veränderungen.
Sie möchten es rückgängig machen. Es ist nicht etwas, das Sie selbst im Code rückgängig machen können, sagen wir, ein Assistent oder Paketmanager hat überall Unmengen von Dingen geändert - Sie möchten einfach alles wieder so machen, wie es war.
Darum geht es bei der Quellcodeverwaltung. Ich bin sicher, es ist einfach.
Okay, du wirst es benutzen, git revert
aber wie?
Und nach dem Laufen git revert
musst du danach noch etwas tun? Müssen Sie die vorgenommenen Änderungen rückgängig machen oder wird die Rückgabe direkt auf das Repo festgeschrieben oder was?
Natürlich müssen Sie erneut pushen und dem Team wahrscheinlich Ihre Bälle mitteilen.
git revert -n <commitToRevet>
odergit revert --no-commit <commitToRevet>
Verwenden Sie git revert wie folgt:
git revert <insert bad commit hash here>
git revert
Erstellt ein neues Commit mit den Änderungen, die zurückgesetzt werden.git reset
Löscht Ihren Git-Verlauf, anstatt ein neues Commit durchzuführen.Die folgenden Schritte sind die gleichen wie bei jedem anderen Commit.
quelle
Der Grund
reset
und dierevert
Tendenz, in denselben Gesprächen häufig aufzutreten, liegt darin, dass verschiedene Versionskontrollsysteme sie verwenden, um unterschiedliche Bedeutungen zu haben.Insbesondere Personen, die an SVN oder P4 gewöhnt sind und nicht festgeschriebene Änderungen an einer Datei wegwerfen möchten, greifen häufig danach,
revert
bevor ihnen mitgeteilt wird, dass sie dies tatsächlich möchtenreset
.In ähnlicher Weise wird das
revert
Äquivalent in anderen VCS häufig aufgerufenrollback
oder ähnliches - aber "Rollback" kann auch "Ich möchte die letzten Commits vollständig verwerfen" bedeuten, was angemessen ist,reset
aber nichtrevert
. Es gibt also eine Menge Verwirrung, wo die Leute wissen, was sie tun wollen, aber nicht klar sind, welchen Befehl sie dafür verwenden sollen.Was Ihre eigentlichen Fragen zu ...
git revert first-bad-commit..last-bad-commit
git revert
Fordert Sie standardmäßig zur Eingabe einer Festschreibungsnachricht auf und schreibt die Ergebnisse fest. Dies kann überschrieben werden. Ich zitiere die Manpage :Insbesondere wird standardmäßig für jedes Commit, das Sie zurücksetzen, ein neues Commit erstellt. Sie können
revert --no-commit
Änderungen erstellen, die alle zurücksetzen, ohne diese Änderungen als einzelne Festschreibungen festzuschreiben, und dann nach Belieben festschreiben.quelle
git revert first-bad-commit..last-bad-commit
: Ich denke das sollte seingit revert parent-of-first-bad-commit..last-bad-commit
.Die Frage ist ziemlich alt, aber Revert verwirrt immer noch Leute (wie mich)
Als Anfänger habe ich nach einigem Ausprobieren (mehr Fehler als Versuche) einen wichtigen Punkt:
git revert
erfordert die ID des Commits, das Sie entfernen möchten, um es in Ihrem Verlauf zu behaltengit reset
erfordert das Commit, das Sie behalten möchten , und entfernt anschließend alles aus dem Verlauf.Das heißt, wenn Sie
revert
mit der ersten Commit-ID verwenden, befinden Sie sich in einem leeren Verzeichnis und einem zusätzlichen Commit im Verlauf, während Ihr Verzeichnis beim Zurücksetzen auf das ursprüngliche Commit zurückgesetzt wird und Ihr Verlauf so wird, als ob Die letzten Commits sind nie passiert.Um noch klarer zu sein, mit einem Protokoll wie diesem:
Wenn Sie verwenden,
git revert cb76ee4
werden Ihre Dateien standardmäßig auf 01b56c6 zurückgesetzt und Ihrem Verlauf wird ein weiteres Commit hinzugefügt:git reset 01b56c6
Bringt stattdessen Ihre Dateien zurück zu 01b56c6 und bereinigt danach alle anderen Commits aus Ihrem Verlauf:Ich weiß, dass dies "die Basis" ist, aber es war ziemlich verwirrend für mich, als ich mit der
revert
ersten ID ('first commit') lief. Ich hatte erwartet, meine ursprünglichen Dateien zu finden. Es dauerte eine Weile, bis ich verstanden hatte, dass Sie Ihre Dateien zurück benötigen, wenn Sie sie zurück benötigen Als 'erstes Festschreiben' müssen Sie die nächste ID verwenden.quelle
Ich habe einige Commits zurückgesetzt, indem ich 'git revert commit id' ausgeführt habe, wie zum Beispiel:
Dann wurde ich aufgefordert, das Zurücksetzen festzuschreiben (genau wie beim Ausführen von 'git commit'). Mein Standard-Terminalprogramm ist Vim, also habe ich ausgeführt:
Schließlich habe ich die Änderung in das Repository verschoben mit:
quelle