通过命令行在Git提交消息中使用感叹号?

Dan*_*ore 146 git bash

如何从命令行向Git提交消息输入感叹号?

可以使用反斜杠转义感叹号,但反斜杠也会在提交消息中结束.

我想要这样的东西:

git commit -am "Nailed it!"
Run Code Online (Sandbox Code Playgroud)

Sie*_*geX 217

使用单引号而不是双引号

git commit -am 'Nailed it!'
Run Code Online (Sandbox Code Playgroud)

或者,如果您出于某种原因需要使用双引号但仍需要文字,!那么请通过脚本顶部的历史记录扩展来关闭set +H

  • 或者只是混合你的引号:`git commit -am"$ FOO:Nailed it"'!'`` (47认同)
  • 这在OS X中对我不起作用,所以我只使用`git commit`(no -m)为我的消息打开一个文本编辑器. (4认同)

nic*_*_zs 41

要解决的另一个方法是添加一个空格!喜欢:

git commit -am "Nailed it! "
Run Code Online (Sandbox Code Playgroud)

注意之间的空间!最后一个".

(该空间不会包含在提交消息中 - Git会自动从提交消息中修剪尾随空格.)

  • 我对自己很生气,因为很久以前没有在谷歌上搜索这个问题的答案。我不知道这会是一个如此简单的解决方案。我的提交信息值得我试图带给他们的兴奋! (4认同)
  • 这对我来说似乎是最简单的解决方案,并且允许带有变量插值的双引号:`git commit -m"$(sillyname)$(buzzphrase).$(superb)!"`:) (3认同)

PDK*_*PDK 5

无需记住要使用的引号或转义符,而是

  1. 输入您的命令(或其中的一部分)
  2. 在您的命令行中,按 Ctr X E» 将打开您的“外部编辑器”。
  3. 编辑您的命令,然后关闭您的编辑器。

...命令将被执行,任何特殊字符都将正确显示在 Git 提交消息中!

(注意许多其他用途:键入复杂的命令,在提交消息中添加换行符等)


Rya*_* H. 5

如果您需要使用双引号并且 the!是消息中的最后一个字符,请保留!引号的外部,因为我们仅使用引号以便将空格包含在消息中。

git commit -m "Reverting last commit because I don't like it"!
Run Code Online (Sandbox Code Playgroud)

如果需要包含!中间字符串,可以使用单引号,但如果需要使用文字单引号,则需要关闭引号,然后'通过转义将其放在字符串的外部。所以,假设你的消息是I don't like it! Reverting again!,这可以用'I don'+ \'+组成't like it! Reverting again!'

git commit -m 'I don'\''t like it! Reverting again!'
Run Code Online (Sandbox Code Playgroud)

任何比这更复杂的事情,您可能最好使用git commit并让 git 调用您的默认文本编辑器:)