Manchmal enthält git den Diff zum Festschreiben, wenn er verbose verwendet wird

424
Ivan Dokov

Ich verwende git Version 2.16.2 für macOS Mojave (aber ich habe dies auch bei anderen Versionen gesehen) und beobachte ein merkwürdiges Verhalten von git commit -v.

Manchmal, wenn ich meine Festschreibungsnachricht schreibe und den Editor schließe (in meinem Fall Nano), wird die Festschreibungsnachricht geändert und die Festschreibungsdifferenz wird der Nachricht hinzugefügt.

Zum Beispiel:

commit c7f28bc4849318a542fe6312444f3a72d82787f0 Author: Ivan Dokov <***@gmail.com> Date: Tue Oct 16 16:33:49 2018 +0300  Firm Notes deletion  diff --git a/src/app/pages/firm/firm-notes/firm-notes.component.html b/src/app/pages/firm/firm-notes/firm-notes.component.html index 2267393..f0cfed4 100644 --- a/src/app/pages/firm/firm-notes/firm-notes.component.html +++ b/src/app/pages/firm/firm-notes/firm-notes.component.html @@ -14,17 +14,38 @@ ... 

Ich denke, es passiert, wenn ich vorher keine leere Zeile hinterlasse:

# Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. 

Dieses Verhalten ist nicht konsistent. Normalerweise lasse ich keine leere Zeile und es funktioniert so, wie es sollte, aber wenn ich tatsächlich die Meldung zum schlechten Commit sehe, ändere ich das Commit und füge eine leere Zeile hinzu, und das Problem ist gelöst. Das Problem ist, dass ich die Commit-Nachricht nicht immer im Auge habe, nachdem ich das Commit gemacht habe, und ich solche schlechten Commit-Nachrichten in das Repository schiebe.

Leider bin ich der einzige, der git commit -vim Büro arbeitet, und niemand sonst beobachtet ein solches Problem.

Hier ist meine gitconfig .

Google hilft auch nicht weiter, da ich anscheinend keine Beiträge mit ähnlichen Problemen finde.

Update: Ich habe gerade festgestellt, dass das Problem durch das Hinzufügen einer leeren Zeile nach der Commit-Nachricht nicht immer gelöst werden kann.

0

1 Antwort auf die Frage

0
A.H.

Wenn ich git commit -vdiese Nachricht erhalte, wird standardmäßig folgende Meldung angezeigt:

# Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # On branch master # Changes to be committed: # modified: foo.txt # # ------------------------ >8 ------------------------ # Do not modify or remove the line above. # Everything below it will be ignored. diff --git a/foo.txt b/foo.txt index 88545b8..9fcffaf 100644 

Für Ihren Fall ist dies der Teil, den Sie nicht ändern sollten:

# ------------------------ >8 ------------------------ # Do not modify or remove the line above. # Everything below it will be ignored. 

Wenn Sie diese Zeilen nicht sehen, haben Sie sich möglicherweise git commitauf eine seltsame Weise konfiguriert . In diesem Fall überprüfen Sie mit diesem Befehl und konsultieren Sie git help configund git help commit:

git config -l |grep "^commit\." 
Ich sehe die Zeilen und modifiziere sie natürlich nicht. Alles, was ich mache, ist die Festschreibungsnachricht an der oberen Position des Cursors zu schreiben und die Datei zu speichern. Der Inhalt der Festschreibungsdifferenz wird jedoch an die Festschreibungsnachricht angehängt, wenn ich nach meiner Nachricht keine leere Zeile hinterlasse. Ivan Dokov vor 5 Jahren 0
Die magischen Linien scheinen ziemlich "vernünftig" zu sein - sogar das Hinzufügen eines Leerraums löst das Verhalten aus, das Sie beobachten. In IHREM Fall handelt es sich also möglicherweise um eine Änderung des EOL-Stils (LF vs. CR + LF). A.H. vor 5 Jahren 0
Das ist wahrscheinlich der Fall. Denken Sie, dass dies mit Nano, dem Terminal (iTerm2) oder irgendetwas anderem vom macOS und irgendwelchen Hinweisen, wie man das Verhalten debuggen und ändern kann, zusammenhängt? Ivan Dokov vor 5 Jahren 0
Ich habe gerade herausgefunden, dass das Hinzufügen einer leeren Zeile nach meiner Commit-Nachricht das Problem nicht immer löst. Ivan Dokov vor 5 Jahren 0
Die Festschreibungsnachricht wird normalerweise in `.git / COMMIT_EDITMSG` gespeichert. Sie können Hexdumps vor und nach dem ** Speichern ** der Nachricht vergleichen, ** bevor Sie ** den Editor beenden. Sie können dies sogar automatisieren, indem Sie den Editor mit einem Shellskript umschließen, das diese Aufgabe erfüllt A.H. vor 5 Jahren 0