Переривання коміту через порожнє повідомлення коміту


82

Як початківець git-користувач, коли я намагаюся взяти участь у роботі

git commit -a -v

і я ввожу повідомлення про коміт у своєму редакторі, закриваю файл і отримую таку помилку:

Aborting commit due to empty commit message.

Я прочитав майже всі теми, що стосуються цього питання, змінив редакторів, в основному пробував все, але нічого не допомагає. Що я повинен зробити?

Одне, що я помітив, намагаючись увесь процес з notepad ++, файл не вдалося зберегти.

Можливе рішення:

git commit -am "SomeComment"

Але цим я відчуваю, що я нібито зводить нанівець мету використання git. Я хочу належним чином задокументувати свої зміни.


Яку версію git для Windows ви використовуєте?
Джош Лі

3
Єдине, що зводить нанівець, - це не введення відповідного повідомлення коміту. git commit -am "SomeRelevantComment"
NickSuperb

Яку помилку ви отримуєте при спробі зберегти файл із редактора?
Карл Білефельдт,

У мене виникла проблема в Windows 7, коли я працював над файлами, що знаходились у розділі `C: \ Program Files`. Windows 7 захищає від запису в цьому каталозі (і в будь-якому іншому місці), а оскільки тимчасовий файл (COMMIT_MSG або щось інше), куди ви пишете повідомлення про коміт, створюється в каталозі .git, це не вдалося.
Готьє

"документальний"? Хм ...
Патрік

Відповіді:


140

Коли ви встановлюєте редактор у конфігурації Git, переконайтеся, що передано параметр "-w", щоб змусити Git чекати вашого повідомлення про коміт, яке ви введете у своєму користувацькому редакторі.

git config --global core.editor "[your editor] -w"

1
Примхи на піднесеному тексті 2. Спробував купу інших речей, це було першим результатом. Дякую Зак.
Скотт Сільві,

Виправлено для мене використання піднесеного тексту 2 або gedit як тестів.

Піднесений текст 3: -w ВНУТРІ цитат, генію. я балувався, використовуючи його поза цитатами, як я бачив на багатьох інших форумах та прикладах.
danjah

7
Для macvim використовуйте mvim -fзамість -wпрапора.
nishanthshanmugham

1
Здається , що іноді є помилка при використанні існуючого примірника Gedit для установки фіксації повідомлень, тому "gedit -w"не працювала для мене, але "gedit -s"і "gedit --standalone"працює.
jfv

42

Ця помилка може статися, якщо ваш коментар до коміту - це один рядок, що починається з #символу. Наприклад, я отримав цю помилку, коли у вікні мого текстового редактора повідомлень про коміти виявив таке:

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

Проблема, звичайно, полягає в тому, що моє повідомлення коміту починалося з #символу, тому git розглядав цей рядок як коментар і, отже, бачив повідомлення коміту порожнім, оскільки в ньому не було нічого, крім коментарів!

Виправлення полягало в тому, щоб почати моє повідомлення коміту символом, відмінним від #.

У моєму конкретному випадку вкладання ідентифікатора Pivotal у квадратні дужки зробило щасливим і git, і Pivotal :

[#122143980] My commit message here. 

3
GitLab має однаковий синтаксис для проблем, я звик додавати префікси моїх повідомлень до комітів ідентифікатором проблеми, і це була проблема, брекет-номер номера проблеми також прекрасно працює з GitLab.
Орблінг

2
Га, чудово, ти це прибив! Це змусило мене рухатись, але я бачу, що я дійсно розпочав фіксацію з номером випуску GitHub #xxxx Fixed: ...і змінивши це на Fixed #xxxx: ...справді це виправило. Дякую.
Slartibartfast

Я посилався на проблему github за допомогою #123 some message. працював під час коміту, але не вдався пізніше під час фіксації за rebaseдопомогою редактора.
Стаффорд Вільямс

20

Для коду Visual studio

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

Для атома

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

Для піднесених

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

1
Можливо, захочеться перевірити різницю між вашими першими двома методами
mcalex

І як повернутися до початкової обстановки? Або як ви читаєте поточний параметр?
Тім

8

Якщо ви хочете зафіксувати належну документацію (довгий, багаторядковий коментар), але не хочете цього -mваріанту, ви можете зробити (і що я роблю під час підготовки своїх комітів ):

  • напишіть свою документацію (під час внесення змін) в окремий файл 'doc-commit' (або будь-яке інше ім'я, яке ви хочете назвати)
  • фіксувати за допомогою ' git commit -a -F /path/to/doc-commit')

Коротше кажучи, використовуйте окремий файл (який може бути на будь-якому шляху, який ви хочете) як повідомлення про фіксацію.


Чи зможу я робити коментарі у цьому файлі ( # my comment)?
borisdiakur

@Lego Я підозрюю, що так (не перевіряв його безпосередньо, але він повинен сприймати повний вміст вашого текстового файлу як повідомлення про фіксацію.
VonC

Я щойно спробував: мої коментарі трактувались як частина повідомлення, тому, схоже, неможливо мати коментарі в текстовому файлі. У будь-якому випадку мені подобається процес документування змін в окремому файлі doc-commit під час роботи над завданням. Тож - спасибі!
borisdiakur

8

Я також новачок у Git. Я зіткнувся в основному з тією ж проблемою, що і ваша. Я вирішив це, набравши:

git commit -a -m 'some message'

Причина в тому, що git не дозволяє фіксувати без повідомлень. Вам доведеться пов’язати деякі повідомлення з командою коміту.


5

У мене була ця проблема. Я щойно встановив 1.8.0 раніше, і виявив, що мені довелося трохи змінити вищевказане. Я дуже новий у всьому цьому, але, по суті, здається, що при фіксації він буде використовувати content.editor, а не core.editor, принаймні, якщо у вас є щось встановлене для content.editor.

Отже, це було

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

що нарешті дозвольте мені зробити! Очевидно, звичайно, використовуйте будь-який редактор, яким ви користуєтесь.

Сподіваюся, це колись комусь допоможе!


5

Git не дозволяє фіксувати без вказаного повідомлення. Ви вказали повідомлення фіксації у діалоговому вікні коміту?

Зверніть увагу, що рядки, що починаються з #, Git розглядає як коментар і не вважає коментарями і ігнорує Git.


5

Спочатку видаліть старі записи редакторів:

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

Встановіть свій редактор:

  • Для Notepad ++

    git config --global core.editor "Notepad++ -w"
    git config core.editor "Notepad++ -w"
    
  • Для піднесених

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

4

Я налаштував свій редактор atom як

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

але коли я це зробив

git commit

коли atom вже був запущений, він відкрив нову вкладку для додавання коментарів, але git не чекав, поки я збережу файл, і миттєво викинув повідомлення "Aborting". Коли я закрив атом і спробував зробити ще один раз, git запустив атом і чекав додавання коментарів.


4

На машині Windows для редактора «Sublime» ми також можемо додати наступний рядок у файл .gitconfig у наступну папку [ВАШ ДИСКОВИЙ ЛИСТ]: / users / username /

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

Сподіваюся, це допоможе.


Для мене це створює файл із назвою --wait. У вас є робочий приклад, де шлях до файлу включає пробіли, як у Program Files? Дякую.
zx81

2

Він очікує повідомлення коміту.

Для vim : (я також новачок. Дотепер я працював лише з vim)

Після вашої команди,

git commit -v

Ви перейдете до файлу з іменем

".git / COMMIT_EDITMSG"

Це відкриється у вашому редакторі (а в моєму випадку це vim)

Ви знайдете багато коментованого тексту, який схожий точно на те, що ви бачили, коли робили

git status  OR
git diff

Якщо ви помітили, зверху ви можете побачити порожній рядок - там, де він очікує повідомлення про коміт. Ви можете ввести тут повідомлення про коміт і зберегти та вийти з редактора. Зроблено!


perfecto !!! Я знаю, що було б просте рішення
Скотт Стенсленд,

2
git config --global core.editor "subl -w" -F 

Це допомогло мені після багато-багато спроб і помилок, сподіваюся, хтось вважає це корисним.

Я вже посилався на sublime 3 для використання в якості команди sublime.

Я абсолютно не знаю, чому -F прапор поза "" спрацював.


1
Мені не потрібен був прапор -F; -w було достатньо. -w каже Sublime "Зачекайте, поки файли будуть закриті перед поверненням" (від subl --help).
Гален Лонг

1

Обов’язково пропишіть велику літеру.

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

або скористайтеся наступною командою, щоб замінити існуючу, яка працює неправильно.

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


1

Для коментарів щодо Notepad ++ (Windows) зробіть наступне:

1. Створіть десь пакетний файл (наприклад, c: \ Users \ me \ scripts \ npp.bat)
Запишіть це в пакетний файл (залежно від того, де встановлено ваш Notepad ++):

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

2. Збережіть пакетний файл.
3. Відкрийте .gitconfig (який зазвичай знаходиться у вашій папці користувача Windows) і переконайтесь, що у
розділі [core] у вас є:

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

Або запустити:

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

4. Тепер виконайте якусь фіксацію, і вона відкриє Notepad ++, git commit буде чекати, поки вікно notepad ++ не буде закрито.


1

Для початку переконайтесь, що ваш git правильно налаштований на те, щоб відкрити якусь підказку редактора (visual studio / sublime / notepad ++ / atom тощо), щоб продовжити далі.

  • Для мого випадку я налаштував свій git для використання Visual Studio в середовищі Ubuntu.
  • Я намагався здійснити зміну, вона не вдалася з даною помилкою.
  • Потім я подивився свій .gitconfigфайл і виявив, що в моєму редакторі відсутній -wпараметр
  • Я запустив git config --global core.editor "code -w"команду і перевірив свій .gitconfigфайл, помітив, що -wйого туди додано правильно.
  • Спробував здійснити зміну ще раз, і це спрацювало для мене.

Сподіваюся, це допоможе іншим новачкам, як я.


0

Я вирішив проблему, переключившись з мого вишуканого редактора MacVim, який відкриває нове вікно, на стандартний за замовчуванням vim в / user / bin / vim, який відкривається в тому ж вікні, що і оболонка, звідки він викликається, і, схоже, це виправлено проблема.


1
вам просто потрібно додати прапор -f, наприкладgit config --global core.editor "mvim -f"
Ilias Karim

0

Я отримав цю проблему і виявив, що якщо я не додаю жодного коментаря після фіксації, це видає мені цю помилку. Якщо я стрибаю, щоб негайно повернутися до головного bash, він не виконує. Просто, щоб бути більш зрозумілим, я використовую GIT Bash, а не інший редактор


0

Коли я використовував повний шлях до файлу atom, він не працював, тому замість використання:

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

Я використав:

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

і це спрацювало просто чудово. Удачі!

ВАЖЛИВО: Спочатку переконайтеся, що atom починає правильно викликати його безпосередньо (atom) із командного рядка, який ви використовуєте.


0

рішення для помилки коміту

введіть тут опис зображення

Як я показав вище, є поле коміту, яке потрібно ввести під час фіксації, це в основному для контролю версій та розуміння змін для кожного коміту.

Якщо ви не введете це, ви отримаєте помилку: Переривання коміту через порожнє повідомлення коміту

Примітка: вищезазначене працює лише у Rstudio комітування та витягування файлів.


0

Я отримав цю помилку, і хоча я використовував git config --global core.editor "code -w", вона все одно не буде чекати, поки я закрию файл. Це просто негайно перерветься.

Моя проблема полягала в тому, що я запускав цю команду раніше git config core.editor "code".

Здається, core.editor(що, як я вважаю, є специфікацією локального робочого каталогу), взяло перевагу над --global core.editor.

Якщо git config --global core.editor "code -w"(або будь-який інший редактор, який ви намагаєтесь використовувати) не працює для вас, спробуйте опустити файл --global.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.