【问题标题】:Escape comment character (#) in git commit message [duplicate]git commit 消息中的转义注释字符(#)[重复]
【发布时间】:2014-05-21 02:28:13
【问题描述】:

我已将 mcedit 设置为 git 提交消息的编辑器。默认情况下,它忽略任何以# 字符开头的行。不管这看起来多么奇怪,我需要能够让我的提交消息看起来像这样:

#FOO-123: Implement bar foo

Committing work in progress

#FOO-123: ... 实际上是我们跟踪器中问题的键 + 标题。跟踪器可以自动获取这些提交消息并将它们添加到问题中。

不幸的是,第一行被视为注释并被忽略。

我不想通过添加-m 从命令行进行提交,因为当您有多行时,这很不方便/丑陋。

我该如何解决这个问题?

【问题讨论】:

  • git config core.commentChar "@" 为我解决了这个问题。

标签: git escaping


【解决方案1】:

您可以尝试在提交消息中为 cmets 定义不同的字符:

git config core.commentchar <another char>

正如我在“Start a git commit message with a hashmark (#)”中提到的,此设置从 git 1.8.2(2013 年 2 月)开始可用。

在你的情况下:

git config core.commentchar "*"

注意,理论上你可以放一个 core.commentchar 字(多个字符),但 git 2.0.x/2.1 会更严格。

commit 50b54fdNguyễn Thái Ngọc Duy (pclouds)

config: 严格 core.commentChar

我们不支持评论字符串(至少现在还不支持)。而且多字节字符编码也可能被误解。

带有两个逗号的测试已更新,因为它违反了这一点。它与introduces core.commentChar in eff80a9 的补丁一起添加(允许自定义“comment char” - 2013-01-16)。我不清楚为什么需要这种行为。


poke 还提到in the comments 来更改commit template

编辑提交消息时,使用给定文件中的内容启动编辑器。
commit.template 配置变量通常用于将此选项隐式地赋予命令。


请注意,Git 2.23(2019 年第三季度)修复了一个错误,因为“git interpret-trailers”始终将“#”视为注释字符,而不管core.commentChar 设置如何,已更正。

参见Jeff King (peff)commit 29c83fc(2019 年 6 月 19 日)。
(由 Junio C Hamano -- gitster -- 合并于 commit 3a50607,2019 年 7 月 9 日)

解释拖车:加载默认配置

interpret-trailers program 不通过git_default_config() 执行通常的配置加载,因此不尊重许多通常的选项。
特别是,我们不会加载core.commentChar,即使底层的预告片代码使用了它的值。

这可以在随附的测试中看到,其中将core.commentChar 设置为“#”以外的任何内容都会导致无法正确处理 cmets。

【讨论】:

  • 那么,例如,如果我想使用*,我该怎么做呢?
  • @carlspring git config core.commentchar *
  • 请注意,如果您不总是使用git commit -m,您可能还想更改默认提交模板。
  • @poke 好点。我已将其包含在答案中以提高知名度。
  • git config core.commentchar "*" 为我工作,您可能需要重新启动终端应用程序才能生效
猜你喜欢
  • 1970-01-01
  • 2014-11-27
  • 2013-03-06
  • 2017-05-11
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
相关资源
最近更新 更多