Abbrechen des Commits aufgrund einer leeren Commit-Nachricht

81

Als Neuling Git-Benutzer, wenn ich versuche, meine Arbeit mit zu verpflichten

git commit -a -v

und ich gebe eine Commit-Nachricht in meinen Editor ein, schließe die Datei und erhalte folgende Fehlermeldung:

Aborting commit due to empty commit message.

Ich habe fast alle Themen gelesen, die sich mit diesem Thema befassen, die Redaktion gewechselt und im Grunde alles versucht, aber nichts hilft. Was soll ich machen?

Eines ist mir aufgefallen, als ich den gesamten Prozess mit Notepad ++ ausprobiert habe, konnte die Datei nicht gespeichert werden.

Eine mögliche Problemumgehung ist folgende:

git commit -am "SomeComment"

Aber auf diese Weise habe ich das Gefühl, dass ich den Zweck der Verwendung von Git irgendwie zunichte mache. Ich möchte meine Änderungen ordnungsgemäß dokumentieren.

cngkaygusuz
quelle
Welche Version von Git für Windows verwenden Sie?
Josh Lee
3
Die einzige Sache, die hier zunichte gemacht wird, ist die Eingabe einer relevanten Festschreibungsnachricht. Git Commit -am "SomeRelevantComment"
NickSuperb
Welchen Fehler erhalten Sie, wenn Sie versuchen, die Datei aus Ihrem Editor zu speichern?
Karl Bielefeldt
Ich hatte dieses Problem unter Windows 7, als ich an Dateien arbeitete, die sich unter "C: \ Programme" befanden. Windows 7 schützt vor dem Schreiben in dieses Verzeichnis (und irgendwo darunter). Da die temporäre Datei (COMMIT_MSG oder etwas anderes), in die Sie Ihre Festschreibungsnachricht schreiben, im Verzeichnis .git erstellt wurde, ist dies fehlgeschlagen.
Gauthier
"dokumentieren"? Hmm ...
Patrick

Antworten:

138

Wenn Sie einen Editor in der Konfiguration von Git festlegen, müssen Sie den Parameter "-w" übergeben, um Git zu zwingen, auf Ihre Commit-Nachricht zu warten, die Sie in Ihrem benutzerdefinierten Editor eingeben würden.

git config --global core.editor "[your editor] -w"
Zakaria AMARIFI
quelle
1
Samesies über erhabenen Text 2. Versuchte eine Reihe anderer Dinge, dies war zuerst zu funktionieren. Danke Zak.
Scott Silvi
Für mich wurde behoben, dass erhabener Text 2 oder gedit als Tests verwendet wurden.
Erhabener Text 3: -w INNERHALB der Zitate, Genie. Ich habe es nicht geschafft, es außerhalb der Anführungszeichen zu verwenden, wie ich in zahlreichen anderen Foren und Beispielen gesehen habe.
Danjah
7
Verwenden Sie für Macvim mvim -fanstelle des -wFlags.
Nishanthshanmugham
1
Manchmal scheint , als gäbe es ein Fehler ist , wenn Sie eine vorhandene Instanz von gedit verwenden eine Commit - Nachricht zu setzen, so "gedit -w"funktionierte nicht für mich, aber "gedit -s"oder "gedit --standalone"Arbeiten.
jfv
42

Dieser Fehler kann auftreten, wenn Ihr Commit-Kommentar eine einzelne Zeile ist, die mit einem #Zeichen beginnt . Ich habe diesen Fehler beispielsweise erhalten, als ich in meinem Texteditor-Fenster für Festschreibungsnachrichten Folgendes festgestellt habe:

#122143980 - My commit message was here. The number to the left is a Pivotal Tracker story/ticket number that I was attempting to reference in the commit message.
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch [MYBRANCH]
# Your branch is up-to-date with 'origin/[MYBRANCH]'.
#
# Changes to be committed:
#   modified:   [MYFILE1]
#   modified:   [MYFILE2]
#

Das Problem ist natürlich, dass meine Festschreibungsnachricht mit einem #Zeichen begann, also sah git diese Zeile als Kommentar und folglich die Festschreibungsnachricht als leer an, da sie nur Kommentare enthielt!

Das Update bestand darin, meine Commit-Nachricht mit einem anderen Zeichen als zu starten #.

In meinem speziellen Fall hat das Einschließen der Pivotal-ID in eckige Klammern sowohl Git als auch Pivotal glücklich gemacht:

[#122143980] My commit message here. 
Jon Schneider
quelle
3
GitLab hat die gleiche Syntax für Probleme. Ich bin es gewohnt, meinen Festschreibungsnachrichten die Problemkennung voranzustellen. Dies war ein Problem. Die Klammerung der Problemnummer funktioniert auch mit GitLab.
Orbling
2
Huh, wunderbar, du hast es geschafft! Es hat mich verrückt gemacht, aber ich sehe, dass ich das Commit tatsächlich mit der GitHub-Problemnummer begonnen habe #xxxx Fixed: ...und durch Ändern dieser Nummer Fixed #xxxx: ...wurde es tatsächlich behoben. Vielen Dank.
Slartibartfast
Ich hatte mit auf ein Github-Problem verwiesen #123 some message. arbeitete während des Festschreibens, schlug jedoch später beim Festschreiben des rebaseVia-Editors fehl .
Stafford Williams
20

Für Visual Studio Code

git config --global core.editor "code -w"

Für Atom

git config --global core.editor "atom -w"

Für Erhabenes

git config --global core.editor "subl -w"
Armin
quelle
1
Vielleicht möchten Sie den Unterschied zwischen Ihren ersten beiden Methoden
überprüfen
Und wie kehren Sie zur ursprünglichen Einstellung zurück? Oder wie liest man die aktuelle Einstellung?
Tim
8

Wenn Sie mit einer ordnungsgemäßen Dokumentation (langer, mehrzeiliger Kommentar) festschreiben möchten, aber die -mOption nicht möchten , können Sie Folgendes tun (und das tue ich bei der Vorbereitung meiner Festschreibungen ):

  • Schreiben Sie Ihre Dokumentation (während Sie die Änderungen vornehmen) in eine separate Datei 'doc-commit' (oder wie auch immer Sie sie nennen möchten).
  • begehen mit einem ' git commit -a -F /path/to/doc-commit')

Kurz gesagt, verwenden Sie eine separate Datei (die sich an einem beliebigen Pfad befinden kann) als Commit-Nachricht.

VonC
quelle
Kann ich in dieser Datei ( # my comment) Kommentare abgeben ?
Borisdiakur
@Lego Ich vermute so (habe es nicht direkt getestet, aber es sollte den gesamten Inhalt Ihrer Textdatei als Commit-Nachricht nehmen.
VonC
Ich habe es gerade ausprobiert: Meine Kommentare wurden als Teil der Nachricht behandelt, daher scheint es nicht möglich zu sein, Kommentare in der Textdatei zu haben. Wie auch immer, ich mag es, Änderungen in einer separaten Doc-Commit-Datei zu dokumentieren, während ich an einer Aufgabe arbeite. So danke!
Borisdiakur
8

Ich bin auch ein Neuling in Git. Ich bin im Grunde auf das gleiche Problem gestoßen wie Sie. Ich habe das gelöst, indem ich Folgendes eingegeben habe:

git commit -a -m 'some message'

Der Grund ist, dass git kein Commit ohne Nachrichten zulässt. Sie müssen Ihrem Commit-Befehl einige Nachrichten zuordnen.

Nichts mehr
quelle
5

Ich hatte dieses Problem. Ich habe gerade 1.8.0 früher installiert und festgestellt, dass ich das oben Gesagte leicht ändern musste. Ich bin in all dem sehr neu, aber im Wesentlichen scheint es, dass beim Festschreiben content.editor und nicht core.editor verwendet wird, zumindest wenn Sie etwas für content.editor festgelegt haben.

So war es

git config --global content.editor "pico -w"

das lass mich endlich begehen! Verwenden Sie natürlich den von Ihnen verwendeten Editor.

Hoffe das hilft irgendwann jemandem!

Salix
quelle
5

Das Git erlaubt kein Commit ohne angegebene Nachricht. Haben Sie die Festschreibungsnachricht im Festschreibungsdialog angegeben?

Beachten Sie, dass die mit # beginnenden Zeilen von Git als Kommentar behandelt werden und von Git nicht als Kommentare betrachtet und ignoriert werden.

Yin
quelle
5

Entfernen Sie zuerst alte Einträge von Editoren:

git config --global --unset-all core.editor
git config  --unset-all core.editor

Stellen Sie Ihren Editor ein:

  • Für Notepad ++

    git config --global core.editor "Notepad++ -w"
    git config core.editor "Notepad++ -w"
    
  • Für Erhabenes

    git config --global core.editor "Notepad++ -w"
    git config core.editor "subl -w"
    
Fizcris
quelle
4

Ich habe meinen Atom-Editor als konfiguriert

git config --global core.editor "atom --wait"

aber als ich es tat

git commit

Als Atom bereits gestartet wurde, öffnete es einen neuen Tab zum Hinzufügen von Kommentaren, aber Git wartete nicht darauf, dass ich die Datei speicherte und warf sofort die Nachricht "Abbruch". Als ich Atom schloss und versuchte, noch einmal ein Commit durchzuführen, startete Git Atom und wartete darauf, dass Kommentare hinzugefügt wurden.

Pavel Tsybulivskyi
quelle
4

Auf einem Windows-Computer für den 'Sublime'-Editor können wir auch die folgende Zeile in der .gitconfig- Datei im folgenden Ordner [IHR ANTRIEBSBUCHSTABE] hinzufügen : / users / username /

[core]
  editor = '[YOUR DRIVE LETTER]:/Program Files/Sublime Text [YOUR VERSION NUMBER]/sublime_text.exe' --wait

Ich hoffe es hilft.

Anmol Saraf
quelle
Für mich erstellt dies eine Datei namens --wait. Haben Sie ein Arbeitsbeispiel, in dem der Pfad zur Datei Leerzeichen enthält, wie in Program Files? Vielen Dank.
zx81
2

Es erwartet eine Commit-Nachricht.

Für vim : (Ich bin auch ein Neuling. Ich habe bisher nur mit vim gearbeitet.)

Nach Ihrem Befehl,

git commit -v

Sie werden zu einer Datei mit dem Namen weitergeleitet

".git / COMMIT_EDITMSG"

Das öffnet sich in Ihrem Editor (was in meinem Fall vim ist)

Sie werden viele kommentierte Texte finden, die genau so aussehen, wie Sie sie damals gesehen haben

git status  OR
git diff

Wenn Sie dies bemerken, sehen Sie oben eine leere Zeile, in der eine Festschreibungsnachricht erwartet wird. Sie können die Commit-Nachricht hier eingeben und den Editor speichern und beenden. Es ist fertig!

AshlinJP
quelle
perfecto !!! Ich weiß, dass es eine einfache Lösung geben würde
Scott Stensland
2
git config --global core.editor "subl -w" -F 

Dies hat mir nach vielen Versuchen und Irrtümern geholfen, hoffe, jemand findet es nützlich.

Ich hatte bereits sublime 3 symlinked, um es als subl-Befehl zu verwenden.

Ich bin völlig ahnungslos, warum -F-Flagge außerhalb des "" funktioniert hat.

Naman Sharma
quelle
1
Ich brauchte die -F-Flagge nicht. -w war ausreichend. -w weist Sublime an, "zu warten, bis die Dateien geschlossen sind, bevor Sie zurückkehren" (von subl --help).
Galen Long
1

Stellen Sie sicher, dass ein Kapital W.

git config --global core.editor "open -a 'Sublime Text 2' -W"

oder verwenden Sie den folgenden Befehl, um einen vorhandenen zu ersetzen, der nicht ordnungsgemäß funktioniert.

git config --replace-all core.editor "open -a 'Sublime Text 2' -W"

bradley4
quelle
1

Gehen Sie folgendermaßen vor, um Notepad ++ (Windows) zu kommentieren:

1. Erstellen Sie irgendwo eine Batch-Datei (z. B. c: \ Users \ me \ scripts \ npp.bat).
Schreiben Sie diese in die Batch-Datei (je nachdem, wo Ihr Notepad ++ installiert ist):

"C:\Program Files\Notepad++\notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"

2. Speichern Sie die Batchdatei.
3. Öffnen Sie .gitconfig (normalerweise in Ihrem Windows-Benutzerordner) und stellen Sie sicher, dass Sie
im Abschnitt [core] Folgendes haben:

editor = '"c:\\Users\\me\\scripts\\npp.bat"'

Oder entweder ausführen:

git config --global core.editor '"c:\Users\me\scripts\npp.bat"'

4. Führen Sie nun eine Art Commit durch, und Notepad ++ wird geöffnet. Git Commit wartet nun, bis das Notepad ++ - Fenster geschlossen wird.

Merkur
quelle
1

Stellen Sie zunächst sicher, dass Ihr Git richtig konfiguriert ist, um eine Art Editor-Eingabeaufforderung (Visual Studio / Sublime / Notepad ++ / Atom usw.) zu öffnen, um fortzufahren.

  • Für meinen Fall habe ich mein Git so konfiguriert, dass es Visual Studio in einer Ubuntu-Umgebung verwendet.
  • Ich habe versucht, eine Änderung vorzunehmen, die bei einem bestimmten Fehler fehlgeschlagen ist.
  • Dann schaute ich auf meine .gitconfigDatei und stellte fest, dass in meinem Editor -wParameter fehlten
  • Ich habe den git config --global core.editor "code -w"Befehl ausgeführt und meine .gitconfigDatei erneut überprüft. Dabei wurde festgestellt, dass die Datei -wdort korrekt hinzugefügt wurde.
  • Ich habe versucht, die Änderung erneut vorzunehmen, und es hat bei mir funktioniert.

Hoffe, das hilft einigen anderen Neulingen wie mir.

Karan
quelle
0

Ich habe das Problem behoben, indem ich von meinem ausgefallenen MacVim-Editor, der ein neues Fenster öffnet, zu dem Standard-Vim in / user / bin / vim gewechselt bin, der im selben Fenster wie die Shell geöffnet wird, von wo aus sie aufgerufen wird, und das scheint behoben zu sein das Problem.

Slehar
quelle
1
Sie müssen nur die -f Flagge hinzufügen, zBgit config --global core.editor "mvim -f"
Ilias Karim
0

Ich habe dieses Problem festgestellt und festgestellt, dass ich diesen Fehler bekomme, wenn ich nach dem Festschreiben keinen Kommentar eingebe. Wenn ich springe, um sofort zur Haupt-Bash zurückzukehren, wird sie nicht festgeschrieben. Um klarer zu sein, verwende ich GIT Bash, keinen anderen Editor

Brenda Yanela Conzi
quelle
0

Als ich den vollständigen Atom-Dateipfad verwendet habe, hat es nicht funktioniert, also anstatt:

git config --global core.editor "c:/programs/atom/atom.exe -w"

Ich benutzte:

git config --global core.editor "atom -w"

und es hat gut funktioniert. Viel Glück!

WICHTIG: Stellen Sie zunächst sicher, dass atom es direkt (atom) über die von Ihnen verwendete Befehlszeile korrekt aufruft.

Juan Castellon
quelle
0

Lösung für Commit-Fehler

Geben Sie hier die Bildbeschreibung ein

Wie oben gezeigt, gibt es ein Festschreibungsfeld, das Sie beim Festschreiben eingeben müssen. Dies dient im Wesentlichen der Versionskontrolle und dem Verständnis der Änderungen für jedes Festschreiben.

Wenn Sie dies nicht eingeben, wird folgende Fehlermeldung angezeigt: Abbrechen des Commits aufgrund einer leeren Commit-Nachricht

Hinweis: Das Obige funktioniert nur beim Festschreiben und Abrufen der Dateien durch Rstudio.

Sanjay KV
quelle
0

Ich habe diesen Fehler erhalten, und obwohl ich ihn verwendet habe git config --global core.editor "code -w", würde er immer noch nicht darauf warten, dass ich die Datei schließe. Es würde einfach sofort abbrechen.

Mein Problem war, dass ich diesen Befehl früher ausgeführt hatte git config core.editor "code".

Es scheint, dass core.editor(von dem ich annehme, dass es sich um eine lokale Arbeitsverzeichnisspezifikation handelt) Vorrang hatte --global core.editor.

Wenn git config --global core.editor "code -w"(oder welcher Editor auch immer Sie verwenden möchten) für Sie nicht funktioniert, lassen Sie den weg --global.

Fluss
quelle