Antworten:
Sie haben zwei Möglichkeiten:
Geben Sie eine leere Festschreibungsnachricht an. Wenn es sich um ein neues Commit handelt und Sie die Nachricht noch nicht gespeichert haben, können Sie sie einfach verwenden :q!
(beenden ohne zu speichern). Wenn Sie bereits gespeichert haben (oder ein vorheriges Commit ändern), löschen Sie einfach die gesamte Protokollnachricht und speichern Sie sie erneut. Dies kann mit ggdG+ :wq
in Vim erfolgen.
Lassen Sie den Editor mit einem Exit-Code ungleich Null beenden. In Vim können Sie verwenden :cq
(mit einem Fehlercode beenden).
Es ist erwähnenswert, dass Sie Ihre Arbeitskopie jederzeit auf den Zustand zurücksetzen können, in dem sie sich vor dem Festschreiben befand git reset HEAD^
.
git reset HEAD^
mehr verlangen , interpretiert Ihre Shell ^ möglicherweise als Zeilenfortsetzung. Versuchen Sie git reset "HEAD^"
, git reset HEAD^^
oder git reset HEAD~1
stattdessen gemäß dieser Antwort: stackoverflow.com/questions/14203952/git-reset-asks-more
:q!
funktioniert nicht beim Ändern eines Commits. Die Festschreibungsnachricht wird nicht aktualisiert, die Änderung wird jedoch ausgeführt :-(:cq
bricht die Änderung vollständig ab.Um zusammenzufassen:
git commit
), beenden Sie die Verwendung von :q!
.git commit --amend
Entfernen Sie beim Ändern (dh ) die Festschreibungsnachricht (nur die ersten Zeilen, die nicht mit einem # beginnen), indem Sie beispielsweise v gedrückt halten und sie mit den Pfeiltasten auswählen und dann Entf drücken. Beenden Sie mit :wq
, um Änderungen zu übernehmen ! Wenn Sie :q!
die Änderungen verwenden, gehen sie verloren und die vorherige Festschreibungsnachricht wird verwendet.Wenn Sie VIM verwenden, ist es in beiden Fällen in Ordnung, mit zu beenden. :cq
VIM wird mit einem Fehlercode beendet und das Festschreiben wird abgebrochen.
:q!
drücken müssen, um vim zu verlassen.