Das Originalplakat besagt:
Die beste Antwort, die mir jemand geben konnte, war, git revert
X-mal zu verwenden, bis ich das gewünschte Commit erreicht habe.
Nehmen wir also an, ich möchte zu einem Commit zurückkehren, das 20 Commits alt ist. Ich müsste es 20 Mal ausführen.
Gibt es einen einfacheren Weg, dies zu tun?
Ich kann Reset nicht verwenden, da dieses Repo öffentlich ist.
Es ist nicht notwendig, git revert
X-mal zu verwenden. git revert
kann einen Festschreibungsbereich als Argument akzeptieren, sodass Sie ihn nur einmal verwenden müssen, um einen Bereich von Festschreibungen zurückzusetzen. Wenn Sie beispielsweise die letzten 20 Commits zurücksetzen möchten:
git revert --no-edit HEAD~20..
Die Commit Bereich HEAD~20..
kurz ist für HEAD~20..HEAD
und Mittel „starten vom 20 - ten Elternteil des HEAD begehen, und kehrt alle Commits , nachdem es auf HEAD up“.
Dadurch werden die letzten 20 Commits zurückgesetzt, vorausgesetzt, es handelt sich bei keinem dieser Commits um Merge-Commits. Wenn es Merge-Commits gibt, können Sie nicht alle in einem Befehl zurücksetzen. Sie müssen sie einzeln mit zurücksetzen
git revert -m 1 <merge-commit>
Beachten Sie auch, dass ich mit einem Bereich mit git revert
Git Version 1.9.0 getestet habe. Wenn Sie eine ältere Version von git verwenden, git revert
funktioniert die Verwendung eines Bereichs mit möglicherweise oder möglicherweise nicht.
In diesem Fall git revert
wird gegenüber bevorzugt git checkout
.
Beachten Sie, dass im Gegensatz zu dieser Antwort, die besagt, dass verwendet werden sollgit checkout
, git revert
tatsächlich alle Dateien entfernt werden, die in einem der Commits hinzugefügt wurden, die Sie zurücksetzen . Dies ist die richtige Methode, um eine Reihe von Revisionen zurückzusetzen.
Dokumentation