Im Falle eines vergangenen Rebase, den Sie nicht ordnungsgemäß abgebrochen haben, haben Sie jetzt (Git 2.12, Q1 2017) git rebase --quit
Siehe commit 9512177 (12. Nov 2016) von Nguyen Thái Ngoc Duy (pclouds
). (Eingefügt von Junio C Hamano -- gitster
-- in commit 06cd5a1, 19. Dez 2016)
rebase
: füge --quit
hinzu, um den Rebase aufzuräumen, lasse alles andere unberührt
Es kommt vor, dass Sie sich entscheiden, einen laufenden Rebase abzubrechen und etwas anderes zu tun, aber Sie vergessen zuerst "git rebase --abort
" auszuführen. Oder der Rebase läuft schon so lange, dass Sie ihn vergessen haben. Bis Sie merken (z.B. durch das Starten eines anderen Rebases), dass es bereits zu spät ist, um Ihre Schritte zurückzuverfolgen. Die Lösung besteht normalerweise aus
rm -r .git/
und fahren Sie mit Ihrem Leben fort.
Es könnten jedoch zwei verschiedene Verzeichnisse für existieren (und das erfordert offensichtlich etwas Wissen darüber, wie ein Rebase funktioniert), und der ".git
"-Teil könnte viel länger sein, wenn Sie sich nicht im obersten Verzeichnis oder in einem verknüpften Arbeitsbaum befinden. Und "rm -r
" in .git
ist sehr gefährlich, ein Fehler darin könnte die Objektdatenbank oder andere wichtige Daten zerstören.
Bieten Sie "git rebase --quit
" für diesen Anwendungsfall an, indem Sie einem Präzedenzfall folgen, der "git cherry-pick --quit
" ist.
Vor Git 2.27 (Q2 2020) wurden die von "git merge --autostash
" erstellten Stash-Einträge zum Speichern des anfänglichen Dirty-Status versehentlich beim "git rebase --quit
" verworfen, was korrigiert wurde.
Siehe commit 9b2df3e (28. Apr 2020) von Denton Liu (Denton-L
).
(Eingefügt von Junio C Hamano -- gitster
-- in commit 3afdeef, 29. Apr 2020)
rebase
: speichere Autostash-Eintrag im Stash Reflog
bei --quit
Unterzeichnet von: Denton Liu
In a03b55530a ("merge
: teach --autostash option", 07. Apr 2020, Git v2.27.0 -- merge aufgeführt in batch #5), wurde die Option --autostash
für git merge
eingeführt.
(Siehe "Kann “git pull
” automatisch Änderungen einlagern und wiederherstellen?")
Besonders, wenn git merge --quit
mit einem vorhandenen Autostash-Eintrag ausgeführt wird, wird er im Stash-Reflog gespeichert.
Dies steht im Gegensatz zum aktuellen Verhalten von git rebase --quit
, bei dem der Autostash-Eintrag einfach aus der Existenz gelöscht wird.
Übernehmen Sie das Verhalten von git merge --quit
in git rebase --quit
und speichern Sie den Autostash-Eintrag im Stash-Reflog anstatt ihn einfach zu löschen.