在Github上使用提交信息同时关闭多个问题

165

我知道您可以通过在提交消息中添加 closes #1fixes #1 来关闭问题。在同一个提交消息中关闭多个问题的最佳方法是什么?

此外,似乎使用 fixes 而不是 closes 不会在提交消息和问题之间创建链接,但它确实会关闭问题。这是怎么回事?


请参见 https://dev59.com/_HI-5IYBdhLWcg3wwbZM。 - Timo Tijhof
5个回答

223

关闭 #1,关闭 #2,关闭 #3; 提交信息的其余部分。

closes子句可以出现在消息的任何位置,并且fixes是一个有效的同义词:

This fixes a memory leak in foo() that closes #4,
also fixes #5 which is a duplicate.

以下内容曾经有效,但现在只引用了问题#2和#3。

关闭#1、#2、#3


2
这对我似乎不起作用,它只关闭列表中的第一项而不是其他项。自从发布以来语法是否已更改?我已经在谷歌上搜索过了,但似乎没有太多关于此的帮助。 - Mark Bell
1
同意。修复 #1,#2 可以引用两个问题... 但只关闭 #1。 - waldo
1
您不必在提交消息中的任何特定位置放置“closes/fixes”部分。例如,“重构类foo,修复#3,新功能bar,关闭#8,不要破坏向后兼容性”应该关闭#3和#8。截至2012年3月,仍存在此“仅参考”的问题。 - Casey Kuball
7
你有没有想过为什么他们改变了“Closes #1, #2, #3”的行为?我觉得写10个“closes”加上要关闭的问题的编号,而不是一个单独的“close”和所有编号,这样做很荒谬。 :-/ - rbaleksandar
1
@Darthfelt 这有点不对,因为它们必须在一起。例如,This closes issue #3 只会引用 #3。无论 closes #3fixes #3 等出现在提交消息的哪个位置,都没有关系,但它们必须是连在一起的。 - Hobbyist
显示剩余4条评论

50
答案及其评论提到了以下格式:

关闭 #1,关闭 #2,关闭#3; 实际提交消息

如果我有一个值得参与的项目,并且有人发送了带有这种提交消息的拉取请求,无论代码多么漂亮,我都会拒绝该请求。
可能这只是我的个人偏好问题,并且最终将被习惯于混乱Git历史摘要的紧凑提交消息所击败,但我更愿意看到具有以下格式的提交消息:

修改摘要。

修复以下错误:
* 修改错误加载程序,修复#1
* 返回非陈旧指针,修复#2
* 将新图形应用于GUI元素,关闭#3

他询问了关闭多个问题的最佳方法。
还请注意,如果您将带有此消息的提交推送到除存储库当前默认分支以外的任何其他分支,则只会引用问题。将提交推送到主分支将关闭这些问题。请参见:Link to GitHub issue number not working?

刚试了一下你的方法。说实话,我真的很喜欢这个! - Billy Coover

16

请注意,自2013年1月以来,“通过提交消息关闭问题”已更改:

现在,当您在提交消息中输入“Fixes#33”时,只有在将提交合并到您的默认分支(通常为master)后,才会关闭第33个问题。

这非常有用,因为这意味着该问题的打开/关闭状态将映射到您的默认分支。
如果默认分支中未修复错误,则问题将保持打开状态。
一旦包含修复的提交合并到您的默认分支中,问题将自动关闭。

您可以使用以下任何关键字通过提交消息关闭问题:

close, closes, closed, fixes, fixed

正如问题"如何在不同的分支上关闭GitHub Issue"所示,一开始可能会有些混乱。


9

6

"使用关键词关闭问题"是GitHub上的一篇文档,介绍了如何关闭问题、标签以及如何关闭多个问题。

根据GitHub的答复,要想关闭多个问题,请参考以下链接:

关闭多个问题

要关闭多个问题,请在每个问题引用前加上上述任意一个关键字。您必须在引用每个问题之前使用关键字才能生效。

例如,This closes #34, closes #23, and closes example_user/example_repo#42将会关闭同一仓库中的问题#34和#23,以及“example_user/example_repo”存储库中的问题#42。


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