Ошибка коммита редактора Git - PullRequest
0 голосов
/ 05 мая 2018

У меня core.editor установлено значение Sublime Text. Однако все мои коммиты автоматически терпят неудачу, и мне дают следующее:

Отмена коммита из-за пустого сообщения коммита.

Даже если он открывает Sublime Text. Есть ли что-то еще, что мне нужно сделать, чтобы предотвратить это, или Sublime просто не будет работать для этого?

Обратите внимание, я делаю все это из терминала.

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Проблема заключается в том, что инструмент командной строки Sublime Text по умолчанию указывает графическому интерфейсу Sublime Text открыть файл, а затем сразу же завершить работу, даже если в графическом интерфейсе все еще открыт файл. Однако есть опция, которая сообщит инструменту командной строки, чтобы он ожидал закрытия файла в графическом интерфейсе. Эта опция --wait (или -w для краткости). Так что, если я попробую это:

: $; git config core.editor subl
: $; git commit

... Я получаю следующее - первая строка кратко отображается, а затем стирается и заменяется второй:

hint: Waiting for your editor to close the file... 
Aborting commit due to empty commit message.

Вы можете видеть или не видеть первую строку, поскольку все это происходит примерно в то же время, когда графический интерфейс Sublime Text становится видимым и открывается файл COMMIT_MESSAGE. А когда вы вернетесь в Терминал, вы увидите только вторую строку.

Но если я добавлю опцию ждать, она будет работать. Поэтому я меняю редактор так:

: $; git config core.editor 'subl -w'

А потом, если я сделаю git commit и переключусь с Sublime Text на терминал, не закрывая файл COMMIT_MESSAGE, я увижу:

: $; git commit
hint: Waiting for your editor to close the file... 

А потом, если я вернусь и закрою файл (после записи какого-либо текста и сохранения его), я вернусь, чтобы увидеть:

: $; git commit
[master 79d5a7b] Commit message I typed in Sublime Text GUI.
 1 file changed, 1 insertion(+), 1 deletion(-)
0 голосов
/ 05 мая 2018

Если вы выходите без изменения сообщения, вы должны знать, что вам действительно нужно что-то набрать в .

То же самое происходит со мной (с gedit), если я на самом деле не ввожу что-то сверх строк комментария, с которых оно начинается (слияния в порядке, поскольку они автоматически добавляют не-комментарий «слияние a с b» -подобный текст).


Однако, если ваш редактор действительно запускается, но коммит git продолжается, пока он открыт, , тогда есть проблема с тем, как редактор запускается.

Существует известная проблема с Sublime Text в том, что программы, которые запускаются, не всегда могут правильно определить, что он все еще работает. Я думаю , что может быть связано с тем, что инструмент командной строки просто говорит программе с графическим интерфейсом пользователя открыть файл (при необходимости запустить его сначала), затем инструмент командной строки завершится.

Следовательно, git будет предполагать, что он завершен, и, поскольку файл не был изменен на этом этапе, он выдаст вам это сообщение об ошибке.

С точки зрения исправления этой проблемы, я считаю, что Sublime Text добавил флаг -w, чтобы этого не произошло.


В любом случае я предпочитаю явно вводить сообщение в командной строке с чем-то вроде:

git commit -m 'fixed my earlier screw-up'

чтобы мне не приходилось беспокоиться о редакторах и прочем.

...