1

对于编号为 1 的 PR,GitHub 会自动创建一个 refrefs/pulls/1/headrefs/pulls/1/merge. 后者包含合并的结果,对于例如 CI 尤其有用(因为您要测试的实际上是合并的结果)。

合并 PR 后,refs/pulls/<number>/merge不再可用(我想是因为 PR 不再可合并)。目前我想对不久前合并的版本进行测试。有没有一种简单的方法可以访问合并 PR 的结果,只给 PR 编号?

4

1 回答 1

1

即使您应该知道提交可能有多个“孩子”(其他人可以基于 PR 工作并稍后将其再次合并到 master 中),以下内容应该可以解决问题:

$ git rev-list -n1 upstream/pull/<number>..upstream/master

这通过让第一个提交从upstream/pull/<number>到 来工作upstream/master。幸运的是 githubupstream/pull/<number>在 PR 的最后一次提交时离开了。

这是https://github.com/RDFLib/rdflib的示例:

它的当前历史如下所示:

* 371263f - (upstream/pull/486) Removed debugging print statement
...
*   fe3fa52 - (upstream/master, upstream/HEAD) Merge pull request #482
|\
| * 354c352 - (upstream/pull/482) fix broken example
|/
*   f81e0b2 - Merge pull request #480
....

这里有一些测试输出:

$ git rev-list -n1 upstream/pull/482..upstream/master
fe3fa522b48e787fa87dc1156e1a10bd6671b62c
$ git rev-list -n1 upstream/pull/486..upstream/master
(no output)
于 2015-06-04T16:39:52.683 回答