Использование восклицательного знака в сообщении коммита Git через командную строку


152

Как ввести восклицательный знак в сообщение коммита Git из командной строки?

Можно избежать восклицательного знака с помощью обратной косой черты, но затем обратная косая черта также заканчивается в сообщении фиксации.

Я хочу что-то вроде этого:

git commit -am "Nailed it!"

6
Для объяснения, почему эта проблема существует в первую очередь: askubuntu.com/questions/434832/…
Марк Эмери

Ответы:


226

Используйте одинарные кавычки вместо двойных

git commit -am 'Nailed it!'

В качестве альтернативы, если вам нужно использовать двойные кавычки по какой-либо причине, но все еще хотите литерал, !отключите раскрытие истории в верхней части вашего скрипта с помощьюset +H


48
Или просто смешайте свои цитаты:git commit -am "$FOO: Nailed it"'!'
Каскабель

4
Это не работает для меня в OS X, поэтому я просто использовал git commit(нет -m), чтобы открыть текстовый редактор для моего сообщения.
Кевин С.

В OSX используйте, git commit -m "This is the best code ever"!как описано в @Ryan H. answer.
mljrg

42

Еще один способ решить эту проблему - добавить пробел после ! лайк:

git commit -am "Nailed it! "

Обратите внимание на пространство между ! и последнее " .

(Пробел не будет включен в сообщение фиксации - Git автоматически удаляет завершающие пробелы из сообщений фиксации.)


3
Это кажется мне самым простым решением и позволяет использовать двойные кавычки с переменной интерполяцией: git commit -m "$(sillyname) $(buzzphrase). $(superb)! ":)
Алекс Холл

4

Не нужно помнить, какие кавычки или экранирование использовать вместо

  1. Введите свою команду (или ее часть)
  2. В командной строке нажмите Ctr X E», чтобы открыть« внешний редактор ».
  3. Отредактируйте вашу команду и закройте редактор.

… Команда будет выполнена и любые специальные символы будут правильно отображаться в сообщении коммита Git!

(NB для многих других целей: ввод сложных команд, добавление разрывов строк в вашем сообщении фиксации и т. Д.)


4

Если вам нужно использовать двойные кавычки и !последний символ в сообщении, просто оставьте !кавычки снаружи , поскольку мы используем только кавычки, чтобы пробелы были включены в сообщение.

git commit -m "Reverting last commit because I don't like it"!

Если вам нужно включить !среднюю строку, вы можете использовать одинарные кавычки, но если вам нужно использовать буквальную одинарную кавычку, вам нужно закрыть свою кавычку, а затем поместить 'внешнюю строку, экранируя ее. Итак, скажем, ваше сообщение I don't like it! Reverting again!, это может быть составлено с 'I don'+ \'+'t like it! Reverting again!'

git commit -m 'I don'\''t like it! Reverting again!'

Что-нибудь более сложное, чем это, вы, вероятно, лучше с git commitGit вызывать ваш текстовый редактор по умолчанию :)


1

Вы также можете ввести:

git commit -am "Nailed it
!
"

Так что просто нажмите Enter и поместите восклицательный знак в новую строку, а затем закройте сообщение фиксации. Обнаружил, что один случайно один день.


6
Это вставит буквальный символ новой строки перед восклицательным знаком в сообщение о коммите, что выглядит ужасно. -1.
Марк Амери

-3

Хм. Избавление от косой черты не появляется в сообщении коммита для меня.

git commit -m "Nailed it\!"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.