除了[skip ci],还有其他“特殊的git提交消息”吗?

pgky5nke  于 11个月前  发布在  Git
关注(0)|答案(3)|浏览(111)

我看到[skip ci]被添加到git的commit消息中,以通知DevOps平台跳过此提交的CI管道。我猜git可能不关心[skip ci],但是.
1.我想知道是否还有其他的 * 命令 * 可以添加到提交消息中?也许[fixes #123]当提交修复一个问题时(在你的任务板上),也许其他的(但不确定是什么),只是好奇。
1.这种语法是标准化的,还是高度依赖于DevOps平台?

guicsvcw

guicsvcw1#

在提交消息中嵌入元数据可以追溯到很久以前。这并不是git独有的,人们一直在TFVC、SVN和CVS中嵌入这类引用。
虽然格式没有标准化,但它们通常遵循相同的格式。不幸的是,不能保证在一个平台上工作的消息在其他平台上也能工作。即使在同一个平台上,您也会发现集成之间的差异。
Azure DevOps是一个示例,其中支持的命令取决于您的存储库是否位于Azure Repos,BitBucket或GitHub中。Azure Boards和Azure Pipelines根据所选集成的不同而做出不同的响应。
有两种命令会浮现在脑海中:

1.关联/链接/交互工作的命令

GitHub、Azure和Jira会识别提交消息中的特殊字符串,以自动将工作(问题、用户故事、任务)与提交关联。文档中的示例:

它们都使用一组非常常见的消息来链接和关闭,但不能保证它们在所有平台上都是相同的。

2.影响持续集成/持续交付的命令

GitHub Actions、Azure Pipelines、BitBucket Pipelines以及几乎所有其他CI/CD平台都会识别提交消息中的特殊提示,从而影响工作流的运行。
这些消息也不是Git独有的,例如Azure Pipelines也支持从TFVC或Subversion构建,并且也会在其他平台上使用这些相同的字符串。

您将再次看到[skip ci]非常常见,但每个平台也有自己的特殊关键字。
请注意,这些命令甚至可能在同一平台上都不通用。[skip ci]在连接到GitHub Repo时在Azure Pipelines中无法工作很长一段时间。据我所知,这已经被修复了。

uqjltbpv

uqjltbpv2#

1.不同的平台有不同的规则。例如githublinear,azure管道。
1.这完全取决于平台。

cnh2zyt3

cnh2zyt33#

这个[skip ci]语法与Git(git(1))无关。它显然来自GitHub Actions
唯一内置的Git commit语法是你配置的注解语法,默认为#(忽略开始为#的行)。还有一些git-rebase(1)语法,如fixup!amend!,但这些语法必须显式选择,所以默认情况下没有意义。
传统的、与其他工具无关的发送元数据的方式是在提交消息的结尾使用trailers

Fixes: #42

字符串
但是可以配置它来识别无冒号的Fixes #42(或者其他什么)GitHubism,因为这个 trailers 是在它之后引入的。

主观考虑

Git的提交消息是永恒的。在这种情况下,人们可能会问是否值得保留这样的 ad hoc 第三方命令,这些命令与提交消息的目的无关,而提交消息的目的是告诉提交是关于什么的。像[skip ci],因为CI现在心情不好,或者[ping @Paul] [1],因为他今天在工作,看起来很短暂。

注意事项

1.组成

相关问题