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

Posted

技术标签:

【中文标题】通过命令行在 Git 提交消息中使用感叹号【英文标题】:Use of an exclamation mark in a Git commit message via the command line 【发布时间】:2011-07-05 03:42:23 【问题描述】:

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

可以用反斜杠转义感叹号,但反斜杠也会出现在提交消息中。

我想要这样的东西:

git commit -am "Nailed it!"

【问题讨论】:

首先解释为什么会出现这个问题:askubuntu.com/questions/434832/… 【参考方案1】:

如果您需要使用双引号,并且 ! 是消息中的最后一个字符,just keep the ! outside of the quotes,因为我们只使用引号以便将空格包含在消息中。

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

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

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

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

【讨论】:

【参考方案2】:

嗯。对我来说,用斜线转义它不会出现在提交消息中。

git commit -m "Nailed it\!"

【讨论】:

【参考方案3】:

无需记住要使用哪些引号或转义符

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

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

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

【讨论】:

这是一个非常有用的快捷方式,谢谢!在 MacOS 上运行良好!【参考方案4】:

解决这个问题的另一种方法是在 ! 之后添加一个 空格,例如:

git commit -am "Nailed it! "

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

(该空格不会包含在提交消息中 - Git 会自动修剪来自提交消息的尾随空格。)

【讨论】:

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

您也可以输入:

git commit -am "Nailed it
!
"

所以只需按回车键并将感叹号放在新行上,然后关闭提交消息。某天偶然发现了一个。

【讨论】:

这将在感叹号之前插入文字换行符到提交消息中,这很难看。 -1.【参考方案6】:

用单引号代替双引号

git commit -am 'Nailed it!'

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

【讨论】:

或者只是混合你的报价:git commit -am "$FOO: Nailed it"'!' 这在 OS X 中不适合我,所以我只是使用 git commit (no -m) 为我的消息打开一个文本编辑器。 在 OSX 中使用git commit -m "This is the best code ever"!,如@Ryan H. 回答中所述。

以上是关于通过命令行在 Git 提交消息中使用感叹号的主要内容,如果未能解决你的问题,请参考以下文章

通过命令行在 Docker 中更改 --commit CMD 时出错

如何通过提交消息搜索 Git 存储库?

git:通过命令行执行本地 Git 工作流

使用命令行在 Visual Studio 2019 中打开 CMake 项目

通过命令行在 Visual Studio 中编译单个独立文件

使用git命令行提交更新的代码