Ich habe Git gebeten, ein Commit innerhalb von Git Bash durchzuführen. Es hat VI aufgerufen, wie es immer der Fall ist.
Ich möchte jetzt das Festschreiben abbrechen. Wie kann ich verhindern, dass das Festschreiben ab diesem Zeitpunkt fortgesetzt wird?
:q!
drücken müssen, um vim zu verlassen.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^
.quelle
git reset HEAD^
mehr verlangen , interpretiert Ihre Shell ^ möglicherweise als Zeilenfortsetzung. Versuchen Siegit reset "HEAD^"
,git reset HEAD^^
odergit 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.quelle
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.quelle