Przerwanie zatwierdzenia z powodu pustego komunikatu o zatwierdzeniu

82

Jako początkujący użytkownik git, kiedy próbuję poświęcić swoją pracę

git commit -a -v

i wpisuję komunikat o zatwierdzeniu w moim edytorze, zamykam plik i otrzymuję ten błąd:

Aborting commit due to empty commit message.

Przeczytałem prawie wszystkie tematy dotyczące tego wydania, zmieniłem redaktorów, w zasadzie próbowałem wszystkiego, ale nic nie pomaga. Co powinienem zrobić?

Jedna rzecz, którą zauważyłem, próbując całego procesu z notatnikiem ++, plik nie mógł zostać zapisany.

Możliwe obejście jest następujące:

git commit -am "SomeComment"

Ale robiąc to, czuję, że w pewnym sensie niweczę cel używania git. Chcę odpowiednio udokumentować swoje zmiany.

cngkaygusuz
źródło
Której wersji git dla systemu Windows używasz?
Josh Lee
3
Jedyną rzeczą niwelującą tutaj jest brak wprowadzenia odpowiedniego komunikatu o zmianach. git commit -am "SomeRelevantComment"
NickSuperb
Jaki błąd pojawia się podczas próby zapisania pliku z edytora?
Karl Bielefeldt
Miałem ten problem w systemie Windows 7 podczas pracy z plikami znajdującymi się w folderze `C: \ Program Files`. Windows 7 chroni przed zapisem w tym katalogu (i gdziekolwiek poniżej), a ponieważ plik tymczasowy (COMMIT_MSG lub coś podobnego), w którym piszesz komunikat o zmianach, jest tworzony w katalogu .git, to się nie udało.
Gauthier
"udokumentować"? Hmm ...
Patrick

Odpowiedzi:

140

Kiedy ustawiasz edytor w konfiguracji Git, upewnij się, że przekazałeś parametr „-w”, aby wymusić na Git oczekiwanie na wiadomość o zatwierdzeniu, którą wpiszesz w edytorze niestandardowym.

git config --global core.editor "[your editor] -w"
Zakaria AMARIFI
źródło
1
Samesies na wysublimowanym tekście 2. Próbowałem kilku innych rzeczy, ta pierwsza zadziałała. Dzięki Zak.
Scott Silvi
Naprawiono dla mnie użycie wzniosłego tekstu 2 lub gedit jako testów.
Wysublimowany tekst 3: -w WEWNĄTRZ cytatów, geniuszu. błąkałem się, używając go poza cudzysłowami, jak widziałem na wielu innych forach i przykładach.
danjah
7
W przypadku macvim użyj mvim -fzamiast -wflagi.
nishanthshanmugham
1
Wygląda na to, że czasami pojawia się błąd, gdy używasz istniejącej instancji gedit do ustawienia komunikatu o zmianach, więc "gedit -w"dla mnie nie działało, ale "gedit -s"lub "gedit --standalone"działa.
jfv
42

Ten błąd może się zdarzyć, jeśli komentarz dotyczący zatwierdzenia to pojedyncza linia zaczynająca się od #znaku. Na przykład otrzymałem ten błąd, gdy w moim oknie edytora tekstu zatwierdzonego pojawił się następujący komunikat:

#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]
#

Problem polega oczywiście na tym, że mój komunikat o zatwierdzeniu zaczynał się od #znaku, więc git widział tę linię jako komentarz, a co za tym idzie, widział komunikat o zatwierdzeniu jako pusty, ponieważ zawierał tylko komentarze!

Poprawka polegała na tym, że mój komunikat dotyczący zmiany zaczynał się od znaku innego niż #.

W moim konkretnym przypadku umieszczenie identyfikatora Pivotal w nawiasach kwadratowych uszczęśliwiło zarówno git, jak i Pivotal :

[#122143980] My commit message here. 
Jon Schneider
źródło
3
GitLab ma taką samą składnię dla problemów, jestem przyzwyczajony do poprzedzania moich komunikatów o zmianach identyfikatorem problemu i to był problem, nawiasy numeru wydania działają również dobrze z GitLab.
Orbling
2
Huh, wspaniale, udało ci się to! To napędzało mnie battey, ale widzę, że rzeczywiście rozpocząłem zatwierdzanie z numerem wydania GitHub #xxxx Fixed: ...i zmiana tego na Fixed #xxxx: ...rzeczywiście to naprawiła. Dziękuję Ci.
Slartibartfast
Odwołałem się do problemu z githubem, używając #123 some message. działał podczas zatwierdzania, ale nie powiódł się później podczas zatwierdzania rebaseedytora via.
Stafford Williams
20

Dla Visual Studio Code

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

Dla atomu

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

Za wzniosłe

git config --global core.editor "subl -w"
Armin
źródło
1
Może zechcesz sprawdzić różnicę między twoimi pierwszymi dwiema metodami
mcalex
Jak wracasz do pierwotnego ustawienia? Albo jak odczytujesz aktualne ustawienie?
Tim
8

Jeśli chcesz zatwierdzić z odpowiednią (długą, wielowierszową dokumentacją), ale nie chcesz tej -mopcji, to co możesz zrobić (a ja robię, przygotowując swoje commity ) to:

  • napisz swoją dokumentację (podczas dokonywania zmian) w osobnym pliku 'doc-commit' (lub jakkolwiek chcesz to nazwać)
  • popełnić za pomocą „ git commit -a -F /path/to/doc-commit”)

Krótko mówiąc, użyj oddzielnego pliku (który może znajdować się w dowolnej ścieżce) jako komunikatu o zmianach.

VonC
źródło
Czy będę mógł dodawać komentarze do tego pliku ( # my comment)?
borisdiakur
@Lego Podejrzewam więc (nie testowałem go bezpośrednio, ale powinna wziąć pełną zawartość pliku tekstowego jako commit wiadomość.
VonC
Właśnie to wypróbowałem: moje komentarze były traktowane jako część wiadomości, więc wydaje się, że nie ma możliwości umieszczania komentarzy w pliku tekstowym. W każdym razie podoba mi się proces dokumentowania zmian w osobnym pliku doc-commit podczas pracy nad zadaniem. Więc dziękuję!
borisdiakur
8

Jestem także nowicjuszem w Git. W zasadzie napotkałem ten sam problem, co twój. Rozwiązałem to wpisując:

git commit -a -m 'some message'

Powodem jest to, że git nie pozwala na zatwierdzanie bez komunikatów. Musisz powiązać niektóre wiadomości z poleceniem zatwierdzenia.

Nic więcej
źródło
5

Miałem ten problem. Właśnie zainstalowałem 1.8.0 wcześniej i stwierdziłem, że muszę nieco zmodyfikować powyższe. Jestem w tym wszystkim bardzo nowy, ale zasadniczo wydaje się, że przy zatwierdzaniu użyje content.editor, a nie core.editor, przynajmniej jeśli masz coś ustawionego dla content.editor.

Tak było

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

że wreszcie pozwól mi się zaangażować! Oczywiście użyj dowolnego edytora, którego używasz.

Mam nadzieję, że kiedyś komuś to pomoże!

salix
źródło
5

Git nie zezwala na zatwierdzenie bez określonego komunikatu. Czy określiłeś komunikat o zatwierdzeniu w oknie dialogowym zatwierdzenia?

Zauważ, że linie zaczynające się od # są traktowane jako komentarz przez Git i nie są traktowane jako komentarze i ignorowane przez Git.

Yin
źródło
5

Najpierw usuń stare wpisy redaktorów:

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

Ustaw swój edytor:

  • W przypadku Notepad ++

    git config --global core.editor "Notepad++ -w"
    git config core.editor "Notepad++ -w"
    
  • Za wzniosłe

    git config --global core.editor "Notepad++ -w"
    git config core.editor "subl -w"
    
fizcris
źródło
4

Skonfigurowałem mój edytor atomów jako

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

ale kiedy to zrobiłem

git commit

kiedy atom był już uruchomiony, otwierał nową zakładkę do dodawania komentarzy, ale git nie czekał, aż zapiszę plik i natychmiast wyrzucił wiadomość „Aborting”. Kiedy zamknąłem atom i spróbowałem jeszcze raz zatwierdzić, git uruchomił atom i czekał na dodanie komentarzy.

Pavel Tsybulivskyi
źródło
4

Na komputerze z systemem Windows dla edytora „Sublime” możemy również dodać następujący wiersz w pliku .gitconfig w następującym folderze [TWÓJ LIST NA DYSKU]: / users / username /

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

Mam nadzieję, że to pomoże.

Anmol Saraf
źródło
Dla mnie to tworzy plik o nazwie --wait. Czy masz działający przykład, w którym ścieżka do pliku zawiera spacje, jak w Program Files? Dzięki.
zx81
2

Oczekuje komunikatu o zatwierdzeniu.

For vim : (też jestem nowicjuszem. Do tej pory pracowałem tylko z vimem)

Po twoim rozkazie

git commit -v

Zostaniesz przekierowany do pliku o tej nazwie

„.git / COMMIT_EDITMSG”

To otwiera się w twoim edytorze (który w moim przypadku jest vim)

Znajdziesz wiele skomentowanego tekstu, który wygląda dokładnie tak, jak to, co widziałeś, kiedy to zrobiłeś

git status  OR
git diff

Jeśli zauważysz, możesz zobaczyć pustą linię na górze - tam, gdzie oczekuje komunikatu o zatwierdzeniu. Możesz tutaj wpisać wiadomość dotyczącą zatwierdzenia oraz zapisać i wyjść z edytora. Zrobione!

AshlinJP
źródło
perfecto !!! Wiem, że byłoby proste rozwiązanie
Scott Stensland
2
git config --global core.editor "subl -w" -F 

Pomogło mi to po wielu próbach i błędach, mam nadzieję, że ktoś uzna to za przydatne.

Miałem już dowiązanie symboliczne Sublime 3 do użycia jako polecenie podrzędne.

Nie mam pojęcia, dlaczego flaga -F poza "" zadziałała.

Naman Sharma
źródło
1
Nie potrzebowałem flagi -F; -w było wystarczające. -w mówi Sublime, aby "Zaczekaj na zamknięcie plików przed zwróceniem" (z subl --help).
Galen Long,
1

Upewnij się, że duże W.

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

lub użyj następującego polecenia, aby zastąpić istniejący, który nie działa poprawnie.

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

bradley4
źródło
1

Aby komentować w Notepad ++ (Windows), wykonaj następujące czynności:

1. Utwórz gdzieś plik wsadowy (np. C: \ Users \ me \ scripts \ npp.bat)
Zapisz to w pliku wsadowym (w zależności od tego, gdzie jest zainstalowany twój Notepad ++):

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

2. Zapisz plik wsadowy.
3. Otwórz .gitconfig (który zwykle znajduje się w folderze użytkownika systemu Windows) i upewnij się, że w
sekcji [core] masz:

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

Lub uruchom:

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

4. Teraz wykonaj jakieś zatwierdzenie i otworzy Notepad ++, git commit będzie teraz czekał, aż okno notepad ++ zostanie zamknięte.

Rtęć
źródło
1

Na początek upewnij się, że Twój git jest poprawnie skonfigurowany, aby otworzyć jakiś rodzaj zachęty edytora (Visual studio / sublime / notepad ++ / atom itp.), Aby przejść dalej.

  • W moim przypadku skonfigurowałem git do korzystania z Visual Studio w środowisku Ubuntu.
  • Próbowałem dokonać zmiany, ale nie udało mi się.
  • Potem spojrzałem na mój .gitconfigplik i odkryłem, że w moim edytorze brakuje -wparametru
  • Uruchomiłem git config --global core.editor "code -w"polecenie i ponownie sprawdziłem .gitconfigplik, zauważyłem, że -wzostał tam poprawnie dodany.
  • Ponownie spróbowałem dokonać zmiany i to zadziałało.

Mam nadzieję, że to pomoże innym nowicjuszom, takim jak ja.

Karan
źródło
0

Naprawiłem problem, przełączając się z mojego fantazyjnego edytora MacVim, który otwiera nowe okno, do standardowego domyślnego vima w / user / bin / vim, który otwiera się w tym samym oknie co powłoka, z której została wywołana, i wydaje się, że zostało to naprawione problem.

Slehar
źródło
1
wystarczy dodać flagę -f, np.git config --global core.editor "mvim -f"
Ilias Karim
0

Mam ten problem i dowiedziałem się, że jeśli nie dodam komentarza po zatwierdzeniu, to daje mi ten błąd. Jeśli przeskoczę, aby od razu wrócić do głównego basha, nie zatwierdza się, tylko dla większej jasności używam GIT Bash, a nie innego edytora

Brenda Yanela Conzi
źródło
0

Kiedy użyłem pełnej ścieżki do pliku atomu, nie działało, więc zamiast używać:

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

Użyłem:

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

i działało dobrze. Powodzenia!

WAŻNE: Najpierw upewnij się, że atom zaczyna poprawnie wywoływać go bezpośrednio (atom) z linii poleceń, których używasz.

Juan Castellon
źródło
0

rozwiązanie dla błędu zatwierdzenia

wprowadź opis obrazu tutaj

Jak pokazałem powyżej, istnieje pole zatwierdzenia, które należy wprowadzić podczas zatwierdzania, jest to zasadniczo do kontroli wersji i zrozumienia zmian dla każdego zatwierdzenia.

Jeśli tego nie wpiszesz, pojawi się błąd: Przerwanie zatwierdzenia z powodu pustego komunikatu zatwierdzenia

Uwaga: powyższe działa tylko przy zatwierdzaniu i ściąganiu plików Rstudio.

Sanjay KV
źródło
0

Pojawił się ten błąd i mimo że użyłem git config --global core.editor "code -w", to nadal nie czekało, aż zamknę plik. Po prostu przerwałby natychmiast.

Mój problem polegał na tym, że uruchomiłem to polecenie wcześniej git config core.editor "code".

Wygląda na to, że core.editor(co, jak przypuszczam, jest specyfikacją lokalnego katalogu roboczego), miało pierwszeństwo --global core.editor.

Jeśli git config --global core.editor "code -w"(lub jakikolwiek edytor, którego próbujesz użyć) nie działa dla Ciebie, spróbuj pominąć rozszerzenie --global.

Strumień
źródło