在Git提交信息中通过命令行使用撇号(单引号)的用法

79

我正试图将这个问题推进一步。在标准的Bash shell中,如何使其工作?

git commit -m 'cracked enigma's code'

这是否可以通过反斜杠转义来简单完成,就像以下这样?

git commit -m 'cracked enigma\'s code'

另外,如何使用双引号?是否可以使用反斜杠进行转义?那会不会是最好的方法?还有其他好的替代方法吗?

git commit -m 'cracked the "real" enigma's code'

3
你可以尝试使用反斜杠转义来简单地完成这个任务,自己动手实践一下就知道了! - Felix Kling
1
@FelixKling 没错,但我是一个 Git 初学者,还不太有勇气。 - nutty about natty
1
这实际上与勇气无关。你总可以创建一个空的 git 仓库,创建一个文件,提交更改,然后查看结果。当然,问题本身是没有问题的。 - Felix Kling
(供参考)http://www.gnu.org/software/bash/manual/bashref.html#Double-Quotes&http://www.gnu.org/software/bash/manual/bashref.html#Quoting - nutty about natty
2个回答

126

使用双引号:

git commit -m "cracked enigma's code"

或者,如果您的消息包含其他特殊字符,请仅对单引号使用双引号或反斜杠:

git commit -m 'cracked $enigma'"'"'s code'
git commit -m 'cracked $enigma'\''s code'

4
$符号在这里的作用是什么?不是用来定义变量的吗?(如果这太基础了,那我很抱歉……) - nutty about natty
4
这里的用意是展示为什么简单的双引号不起作用。您可以尝试使用 echo 命令替代 git commit -m - choroba
13
基本上这是因为在双引号内,变量会被展开;而$enigma将被视为变量引用。因此,如果您想使您的消息包含实际的美元符号,就不能使用双引号。 - poke
2
当尝试使用单引号注释进行git提交时,会出现“错误:路径规范 '_____' 与git已知的任何文件不匹配。” - Akin Hwan
好的答案。连接('"'"')确实是最好的方法。我一直在使用它。感觉很奇怪,但非常有效。 - Karl Wilbur

21

如果您的提交信息使用双引号括起来,就不需要转义'字符。

git commit -m "cracked enigma's code"

编辑:无论如何,如果您需要在提交消息中添加一些特殊字符,我更喜欢在编辑器中进行编辑(例如nano或vim),而不使用-m选项进行提交。

git commit

然后将消息放入并退出。这样做比考虑如何转义所有引号和双引号更加舒适。


在OSX,git 2.15.1上,git commit -m“pattern match wasn't exhaustive, scalac!”并不正确。如果我省略感叹号,则可以正常工作。奇怪的事情。 - Viktor Hedefalk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接