Use of an exclamation mark in a Git commit message via the command line

If you need to use double quotes and the ! is the last character in the message, just keep the ! outside of the quotes, since we're only using quotes so that the spaces get included in the message.

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

If you need to include ! mid string, you can use single quotes but if you need to use a literal single quote, you'll need to close your quote, then put the ' outside of the string by escaping it. So, let's say your message is I don't like it! Reverting again!, this can be composed with 'I don' + \' + 't like it! Reverting again!'

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

Anything more complicated than this, you're probably better off with git commit and letting git invoke your default text editor :)


Use single quotes instead of double quotes

git commit -am 'Nailed it!'

Alternatively, if you need to use double quotes for whatever reason but still want a literal ! then turn off history expansion at the top of your script via set +H


Another way to solve that is to add a space after ! like:

git commit -am "Nailed it! "

Note the space between ! and the last ".

(The space won't be included in the commit message - Git trims trailing whitespace from commit messages automatically.)


No need to remember what quotes or escapes to use, instead

  1. Type your command (or part of it)
  2. In your command line, press Ctr X E » will open your "external editor".
  3. Edit your command, and close your editor.

… the command will be executed & any special characters will show up correctly in the Git commit message!

(NB many other uses: typing complex commands, adding line breaks in your commit message etc.)

Tags:

Git

Bash