GitHub中从拉取请求自动关闭问题

60

我要如何使用Pull Request在GitHub上关闭一个问题?我知道可以通过提交信息来关闭多个问题,但这是不同的情况。

我想从Pull Request的描述中关闭问题,而不是从提交中。就像这样:

Pull Request:

Name: bla bla
Description ... , _fixes_ #123

在合并拉取请求时,能否自动关闭#123


5
在GitHub上进行merge时,可以通过添加描述信息,如closes#123fixes#242#111,来关闭拉取请求中的问题。其中#number == issue number。请注意,这是在实际执行merge操作时关闭问题,而不是在拉取请求上关闭问题。 - Andrei-Niculae Petre
你在样本仓库上尝试过这个吗?创建两个问题,其中一个引用另一个使用“closed #xxx”并关闭它。会发生什么? - random
3
工作流程如下:你有一个问题编号为#111,和一个拉取请求编号为#112。当将拉取请求合并到分支中(通过点击“合并拉取请求”按钮),GitHub需要在文本框中提供额外的信息,并要求你“确认合并”。在该文本框中,可以添加“关闭 #111”,当点击“确认合并”时,问题#111将被关闭。虽然不是最理想的方式,但总比没有好。 - Andrei-Niculae Petre
那应该就是答案了。 - random
2个回答

92

作为你在评论中提到的内容, 从拉取请求合并后将会产生一个提交。
在这个提交信息中,您可以添加“close #xx”来触发关闭问题。

然而,正如在“使用提交信息关闭Github中的多个问题”中所提到的,在GitHub博客文章“通过提交信息关闭问题"(2013年1月)和当前的GitHub文档中也有提到。

Now when you enter "Fixes #33" in a commit message, issue 33 will only be closed once the commit is merged into your default branch (usually master).

This is super useful because it means the issue's open / closed status will map to your default branch.
If the bug isn't fixed in your default branch, the issue will remain open.
Once the commit with the fix is merged into your default branch the issue will be automatically closed.

When you do make a commit in a non-default branch with the "Fixes #33" syntax, the issue will be referenced with a tooltip:

Closing Issue

You can use any of these keywords to close an issue via commit message:

close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved

正如cosmolev(已点赞)所提到的2013年5月14日发布的“通过拉取请求关闭问题”博客文章将拉取请求作为关闭问题的一种方式:

有些问题需要更多的工作才能关闭
这就是为什么现在你可以通过拉取请求关闭问题
你只需要在拉取请求的正文中包含特殊的关键词语法(例如 "fixes #5"),即可完成操作。

comment on pull request

当 PR 合并到默认分支时,引用的问题将自动关闭。
它甚至可以跨存储库使用。

正如约翰·艾肯贝里评论中指出的那样,《使用关键词关闭问题》帮助页面确实提到:

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

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


不错,我不知道它已经被修复了。上次我在提交中尝试了#33的修复,问题还没有解决。太棒了。 - Andrei-Niculae Petre
2
正如cosmolev所提到的,并且在我的回答中进行了编辑,@AndreiPetre现在可以通过pull requests关闭问题。 - VonC
小补充。要在一个拉取请求中关闭多个问题,您需要在每个问题之前使用关键字。例如:fixes #123, fixes #321, fixes #999 参考:https://help.github.com/en/articles/closing-issues-using-keywords - John Eikenberry
@JohnEikenberry 谢谢,我已经将您的评论放在答案中以增加可见性。 - VonC

14

有趣。+1。我在我的答案中包含了对那篇博客文章的引用,以增加其可见性。 - VonC

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