Проблемы с вводом сообщения Git commit с Vim

146

ОС: Windows

я пишу

$ git commit

затем

"# Пожалуйста, введите сообщение коммита"

Я пишу текст, как

«Проверка формы добавлена»

Нажмите Enter и не зафиксировано. Затем я нажимаю Shift + Enter, Ctrl + Enter, Alt + Enter - все еще не зафиксировано.

Я думаю, что это глупая проблема, но что я должен сделать?

ATEI
источник
Нет проблем. Но ваш вопрос, вероятно, получит более пристальное внимание в Super User, который более
актуален

Ответы:

232

Если это VIM для Windows, вы можете сделать следующее:

  • введите ваше сообщение, следуя представленным рекомендациям
  • нажмите, Escчтобы убедиться, что вы вышли из режима вставки
  • затем введите :wqEnterили ZZ.

Обратите внимание, что в VIM часто есть несколько способов сделать одну вещь. Здесь есть небольшая разница, хотя. :wqEnterвсегда записывает текущий файл перед его закрытием, в то время как ZZ, :xEnter, :xiEnter, :xitEnter, :exiEnterи :exitEnterтолько писать , если документ изменен .
Все эти синонимы просто имеют разное количество нажатий клавиш.

mousio
источник
1
Когда я вхожу, :wqя вижу следующее сообщение: «.git / COMMIT_EDITMSG» 54L, 2316C записано Отмена коммита из-за пустого сообщения коммита.
Канна
Убедитесь, что вы добавили сообщение. При появлении запроса введите что-то вроде «мое сообщение здесь» (вы перейдете в режим --insert - я полагаю, нажмите esc, чтобы выйти из него). Как только вы закончите и выйдете из режима вставки, введите «ZZ» (заглавная ZZ)
Kpmurphy91
22
Почему, кто придумал это? : wq Enter или ZZ звучит безумно.
Dezman
1
iкоманда начала вставки текста сообщения была чрезвычайно полезной. Спасибо @Matt Greer за это. Этот ответ был хорош для остальных шагов.
ps2goat
47

Я предполагаю, что вы используете msys git. Если вы, редактор, который появляется, чтобы написать ваше сообщение о коммите, vim. Поначалу Вим не дружелюбен. Вы можете предпочесть переключиться на другой редактор. Если вы хотите использовать другой редактор, посмотрите на этот ответ: Как я могу использовать Notepad ++ (или другой) с msysgit?

Если вы хотите использовать vim, введите iтекст сообщения. Когда рад, ударил ESC. Тогда напечатайте :wq, и мерзавец будет тогда счастлив.

Или просто введите, git commit -m "your message here"чтобы пропустить редактор вообще.

Мэтт Грир
источник
16
Вим когда-нибудь дружит? Или люди просто привыкли к его недружелюбию?
Райан Ланди
8
Вим дружелюбен, когда понимаешь, как это работает. Это на самом деле очень логично и хорошо продумано.
Мэтт Грир
Если я хочу использовать символы, которые требуют экранирования (например, апострофы), в сообщении о коммите, я всегда использую редактор vim, потому что это менее раздражает. В противном случае я почти всегда пишу сообщение коммита как часть команды коммита.
Дэвид ДеМар
Это здорово, когда вам нужно изменить сообщение коммита
shinzou
15

Вы пытались просто пойти: git commit -m "Сообщение здесь"

Итак, в вашем случае:

git commit -m "Form validation added"

После того, как вы добавили свои файлы, конечно.

Тони
источник
1
Твой вариант хорош. Но я хочу пойти по пути того, что я написал (Google Translator)
aTei
Не беспокойтесь, я забыл, что после этой команды был редактор. Я редко когда-либо просто выполняю git commit без -m "Message"
Тони
1

Как правило, git commitвызывает интерактивный редактор (на Linux, и, возможно, Cygwin, определяется содержанием вашего$EDITOR переменной среды), в который вы можете отредактировать сообщение коммита. Когда вы сохраняете и выходите, коммит завершается.

Вы должны убедиться, что изменения, которые вы пытаетесь зафиксировать, были добавлены в индекс Git; это определяет, что совершено. Смотрите http://gitref.org/basic/ для подробностей об этом.

Эмиль Сит
источник
0

Вы можете изменить символ комментария на что-то кроме # как это:

git config --global core.commentchar "@"
Мэтт Спрэдли
источник