Wie können Sie in Git eine Rebase zurücksetzen, wenn Sie damit nicht zufrieden sind?
Git hat keinen Trockenlauf für Rebase. Wenn ich eine Rebase durchgeführt habe und sie noch nicht gepusht habe, wie kann ich vorher zurücksetzen, als ob es nie passiert wäre?
Antworten:
Sie können das Reflog verwenden , um die erste Aktion zu finden, bevor die Rebase gestartet wurde, und dann --hard zurück zu ihr zurücksetzen. z.B
Jetzt sollten Sie zurück sein, bevor die Rebase gestartet wurde.
Um den richtigen Ort zum Zurücksetzen zu finden, wählen Sie einfach den Eintrag aus, der am nächsten oben liegt und nicht mit "rebase" beginnt.
Alternativer Ansatz
Wenn die Rebase das einzige ist, was Sie in der Verzweigung getan haben, dh Sie haben keine ungezwungenen Commits / Änderungen - dann können Sie die lokale Verzweigung einfach mit löschen
git branch -D
und sie dann erneut auschecken :Oder für den gleichen Effekt können Sie --hard auf den Ursprungszweig zurücksetzen:
Wenn Sie dies getan haben, während Sie andere nicht gedrückte Commits hatten, haben Sie diese verloren. Verwenden Sie in diesem Fall einfach den obigen Reflog-Ansatz, um zu dem Reflog-Eintrag zurückzukehren, in dem Sie die Festschreibung (en) vorgenommen haben.
quelle
ORIG_HEAD
auf den ursprünglichen Hashwert des Zweigs gesetzt, der neu basiert. Anstatt also die Nummer 2 für zu findenHEAD@{2}
, können Sie einfachORIG_HEAD
... verwenden, aber nur, wenn diesORIG_HEAD
noch ungestört ist. Eine Reihe von Git-Befehlen setzen es (Rebase, Am, Reset und Merge unter verschiedenen Umständen).Rebase behält eine Sicherung des alten Status als
ORIG_HEAD
.Sie können also die letzte Rebase zurücksetzen, indem Sie Folgendes ausführen:
quelle