我正在尝试使用github (通过githubot https://github.com/iangreenleaf/githubot)从拉请求号获得一个拉请求合并提交沙。
我能够得到正确的响应(例如,在“获取单个拉请求”:https://developer.github.com/v3/pulls/下面),但是merge_commit_sha给出了这个错误:
fatal: bad object 304fc816f33f808080c9c87895eea2d66081d373当我比较github上的2页时,我看到的是来自提交页面的两个merge_commit_sha,但我看到的是与拉请求合并页面不同的提交沙。两个父级是相同的,但是合并提交是不同的。从api调用返回的一个不起作用,但另一个让我恢复拉请求提交
git revert -m 1 commit_sha下面是一些屏幕截图示例


这就引出了两个问题:-这两个提交沙之间的区别是什么,为什么只有一个工作来恢复拉请求?
谢谢。
发布于 2014-03-12 03:35:53
GitHub具有已弃用的merge_commit_sha属性,因为它令人困惑。正如他们所描述的这里
The merge_commit_sha attribute holds the SHA of the test merge commit这意味着GitHub创建了一个特殊的分支,它们在其中合并主服务器和拉请求分支,而merge_commit_sha指向代理合并提交,但是在本地回购中没有它。您必须获取特殊的pull/<pull_request_id>/merge分支来查看提交。
好的是在合并拉请求之前可以这样做。像Jenkins GitHub拉出请求生成器这样的工具利用了这种技术。同时,commit_sha是实际的合并提交,这就是您能够恢复它的原因。
因此,如果还不清楚,merge_commit_sha确实给出了正确的提交sha,但是要使用它,您必须先获取pull/<pull_request_id>/merge分支。为了避免将来的弃用问题,您可以获取前面提到的合并分支的头提交,而不是使用merge_commit_sha。
顺便说一句,如果你正在用Hubot构建什么东西,你可能想看看这本书 (无耻的插头)。它包括一个关于GitHub集成的章节。
发布于 2014-03-13 12:52:00
您可以获取拉请求的事件列表,然后找到“合并”事件:
http://developer.github.com/v3/issues/events/#events-1
该事件的commit_id属性将保存合并提交的sha。
https://stackoverflow.com/questions/22331524
复制相似问题