git commit 消息中的反引号

Backticks in git commit message

提问人:NerdOnTour 提问时间:2/17/2022 更新时间:7/5/2023 访问量:2533

问:

我做了

git commit -m "Changed function name `sum` to `sum_list`"

我使用反引号的意图是,当有人在 GitHub 等中查看提交消息时,以等宽字体键入。它在其他上下文中是这样工作的,例如在 Markdown 中。
然而,这并不奏效。A 显示以下提交消息:
sumsum_listgit log
Changed function name to

当我在谷歌上搜索时,我只发现了这个关于反引号命令的问题,但提问者和回答者都已经熟悉我试图理解的概念。

反引号在提交消息中有什么作用?有没有办法将提交消息的某些部分标记为等宽字体?

git git-commit 提交消息 等宽

评论

0赞 Romain Valeri 2/17/2022
在 bash 上下文中,命令替换可以使用以下任一语法: 或 ,其中首先执行子命令,其输出替换为主命令中的子命令。(反引号语法是较旧的语法。<some command> `subcommand` <end of main command><some command> $(subcommand) <end of main command>

答:

26赞 Andreas Louv 2/17/2022 #1

TLDR:使用单引号:

$ git commit -m 'Changed function name `sum` to `sum_list`'

使用反引号是告诉 shell 执行内容的一种方式,它称为命令替换,请考虑以下几点:

$ echo "hello `ls` world"
hello Applications
Desktop
Documents
Downloads
Library
Movies
Music
Pictures
Public world

使用单引号时,唯一的特殊字符是另一个单引号:

$ echo 'hello `ls` world'
hello `ls` world

这完全取决于 UI 的解释,即它们将如何显示您的 git 提交消息,也许反引号会在您的 UI 中专门呈现,但考虑到最低公分母是 .git log

评论

1赞 NerdOnTour 2/17/2022
非常好,谢谢。这也解释了为什么当我在文本编辑器中输入提交消息时不会出现同样的问题(该编辑器在 之后打开)。另外,要明确这一点:使用反引号获得等宽字体的正确方法吗?git commit
2赞 Andreas Louv 2/17/2022
@NerdOnTour 这取决于您阅读提交的位置,如上所述,查看消息将按原样呈现文本。在不同的提交消息查看器(例如在 GitHub 上)中读取它可能会在被解释为 markdown 的消息中解析。git log
0赞 ashrasmun 7/17/2022
我尝试了这种方法,并得到了大量的错误,例如::(git commit -m 'Add startup script' -m '...'error: pathspec 'startup' did not match any file(s) known to giterror: pathspec 'script'' did not match any file(s) known to git
0赞 Andreas Louv 10/4/2022 #2

如果在 or 文件中设置了环境变量 , ,则可以使用:GIT_EDITORVISUALEDITOR.bashrc.zshrc

$ git commit

你的编辑器将打开,你可以在其中编写提交消息。

将以下内容添加到您的 or 文件中。.bashrc.zshrc

export GIT_EDITOR='code --wait'

然后在命令行上:

$ git commit

将打开 VS Code,需要该标志来告诉 VS Code 不要分叉,以便 git 知道你已经完成了提交消息的编写,当你关闭编辑器时。--wait

其他命令也遵循 u 和环境变量:EDITORVISUAL

例如,您可以在命令行上按 that's +,然后按 +。这将使用当前命令行打开指定的编辑器,现在可以使用编辑器对其进行编辑。^X^Econtrolxcontrole

-1赞 Júlio Tati 7/5/2023 #3

对于提交消息来说很酷,人们必须始终用反引号转义他们想要突出显示的单词。

例如。

  • 🚫 不要做
  • ✅ 做
git commit -m "chore: remove unused `code`" 🚫 
git commit -m "chore: remove unused \`code\`" ✅ 
git commit -m 'chore: remove unused \`code\`' ✅ 

预览

“chore:删除未使用的 ” “chore:删除未使用的'代码'” 🚫

'chore:删除未使用的'代码'' ✅
code

最终结果看起来像第一个选项,但不应该这样写,而不转义反引号\


我之前遇到的另一个问题是 CI/CD 工具由于没有转义提交消息中的反引号而无法运行构建。