cab*_*t85 6 git git-revert github-api hubot
我正在尝试使用github api(通过githubot https://github.com/iangreenleaf/githubot)从拉取请求号获取拉取请求合并提交sha。
我能够得到正确的响应(例如此处的“获取单个拉取请求”下的示例:https : //developer.github.com/v3/pulls/),但是merge_commit_sha给了我这个错误:
fatal: bad object 304fc816f33f808080c9c87895eea2d66081d373
Run Code Online (Sandbox Code Playgroud)
当我在github上比较两个页面时,我在提交页面上看到了merge_commit_sha,但是在拉请求合并页面上看到了一个不同的提交。父母双方相同,但合并提交不同。从api调用返回的一个无效,但另一个让我通过以下方式还原请求请求的提交
git revert -m 1 commit_sha
Run Code Online (Sandbox Code Playgroud)
这是一些示例屏幕截图

因此,这引出了两个问题:-这两个提交sha之间有什么区别?为什么只有一个工作才能还原拉取请求?
谢谢。
GitHub 已弃用该merge_commit_sha属性,因为它令人困惑。正如他们在这里描述的那样:
The merge_commit_sha attribute holds the SHA of the test merge commit
Run Code Online (Sandbox Code Playgroud)
这意味着 GitHub 创建一个特殊的分支,在其中合并 master 和您的 pull request 分支,并merge_commit_sha指向该代理合并提交,但是您的本地存储库中没有它。您必须获取特殊pull/<pull_request_id>/merge分支才能查看该提交。
好消息是您可以在合并拉取请求之前执行此操作。像Jenkins GitHub pull request builder这样的工具利用了这种技术。同时commit_sha是实际的合并提交,这就是您能够还原它的原因。
因此,如果仍然不清楚,merge_commit_sha 确实会为您提供正确的提交 sha,但要使用它,您必须先获取pull/<pull_request_id>/merge分支。为避免将来弃用的问题,您可以获取上述合并分支的头部提交,而不是使用merge_commit_sha.
顺便说一句,如果你正在用 Hubot 构建一些东西,你可能想看看这本书(无耻的插件)。它包括一个关于 GitHub 集成的章节。
您可以获取拉取请求的事件列表,然后找到“合并”事件:
http://developer.github.com/v3/issues/events/#events-1
该commit_id事件的属性将保存合并提交的 sha。
| 归档时间: |
|
| 查看次数: |
3712 次 |
| 最近记录: |