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

152

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

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

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

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

Ответы:

226

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

git commit -am 'Nailed it!'

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

SiegeX
источник
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 автоматически удаляет завершающие пробелы из сообщений фиксации.)

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

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

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

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

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

PDK
источник
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 и поместите восклицательный знак в новую строку, а затем закройте сообщение фиксации. Обнаружил, что один случайно один день.

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

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

git commit -m "Nailed it\!"
Стив Джелузо
источник