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

GitBash

Git Problem Overview


How do I enter an exclamation point into a Git commit message from the command line?

It is possible to escape the exclamation point with a backslash, but then the backslash ends up in the commit message as well.

I want something like this:

git commit -am "Nailed it!"

Git Solutions


Solution 1 - Git

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

Solution 2 - Git

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.)

Solution 3 - Git

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.)

Solution 4 - Git

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 :)

Solution 5 - Git

You can also type:

git commit -am "Nailed it
!
"

So just hit enter and place the exclamation mark on a new line, then close off the commit message. Found that one out by accident one day.

Solution 6 - Git

Hmm. Escaping it with a slash doesn't show up in commit message for me.

git commit -m "Nailed it\!"

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDaniel X MooreView Question on Stackoverflow
Solution 1 - GitSiegeXView Answer on Stackoverflow
Solution 2 - Gitnicky_zsView Answer on Stackoverflow
Solution 3 - GitPDKView Answer on Stackoverflow
Solution 4 - GitRyan H.View Answer on Stackoverflow
Solution 5 - Gitcg22View Answer on Stackoverflow
Solution 6 - GitSteve GelusoView Answer on Stackoverflow