Daniel X Moore
Daniel X Moore

Reputation: 15062

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

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!"

Upvotes: 183

Views: 23756

Answers (6)

Ryan H.
Ryan H.

Reputation: 7844

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

Upvotes: 9

Steve Geluso
Steve Geluso

Reputation: 159

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

git commit -m "Nailed it\!"

Upvotes: -2

PDK
PDK

Reputation: 1516

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

Upvotes: 6

nicky_zs
nicky_zs

Reputation: 3773

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

Upvotes: 54

cg22
cg22

Reputation: 355

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.

Upvotes: 0

SiegeX
SiegeX

Reputation: 140227

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

Upvotes: 265

Related Questions