对于编号为 1 的 PR,GitHub 会自动创建一个 refrefs/pulls/1/head
和refs/pulls/1/merge
. 后者包含合并的结果,对于例如 CI 尤其有用(因为您要测试的实际上是合并的结果)。
合并 PR 后,refs/pulls/<number>/merge
不再可用(我想是因为 PR 不再可合并)。目前我想对不久前合并的版本进行测试。有没有一种简单的方法可以访问合并 PR 的结果,只给 PR 编号?
即使您应该知道提交可能有多个“孩子”(其他人可以基于 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)