git - 使用github api从 pull 请求号获取 pull 请求 merge 提交sha

标签 git github-api git-revert hubot

我正在尝试使用 github api(通过 githubot https://github.com/iangreenleaf/githubot)从 pull 请求编号获取 pull 请求 merge 提交 sha。

我能够得到正确的响应(这里的示例在“获取单个 pull 请求”下:https://developer.github.com/v3/pulls/)但是 merge_commit_sha 给我这个错误:

fatal: bad object 304fc816f33f808080c9c87895eea2d66081d373

当我比较 github 上的 2 个页面时,我看到提交页面中的 merge_commit_sha,但我看到 pull 请求 merge 页面中的不同提交 sha。两个父级相同但 merge 提交不同。从 api 调用返回的一个不起作用,但另一个让我通过

恢复 pull 请求提交
git revert -m 1 commit_sha

以下是一些示例屏幕截图 enter image description here enter image description here

所以这引出了两个问题: - 这 2 个提交 sha 之间有什么区别,为什么只有一个可以恢复 pull 请求?

  • 如何使用 github api 获取 merge pull 请求提交 sha?

谢谢。

最佳答案

GitHub 有 deprecated merge_commit_sha属性,因为它令人困惑。正如他们描述的那样here :

 The merge_commit_sha attribute holds the SHA of the test merge commit

这意味着 GitHub 创建了一个特殊的分支,在那里他们 merge 了 master 和你的 pull request 分支,并且 merge_commit_sha指向该代理 merge 提交,但是您的本地存储库中没有它。您将不得不获取特殊的 pull/<pull_request_id>/merge分支以查看该提交。

好在您可以 merge pull 请求之前执行此操作。还有像 Jenkins GitHub pull request builder 这样的工具利用这种技术。同时commit_sha是实际的 merge 提交,这就是您能够还原它的原因。

所以,如果还是不清楚,merge_commit_sha 确实给你正确的提交 sha,但要使用它你必须获取 pull/<pull_request_id>/merge先分支。为了避免将来弃用的问题,您可以获取上述 merge 分支的头部提交,而不是使用 merge_commit_sha .

顺便说一下,如果您正在使用 Hubot 构建某些东西,您可能需要查看 this book (不要脸的插件)。其中有一章是关于 GitHub 集成的。

关于git - 使用github api从 pull 请求号获取 pull 请求 merge 提交sha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22331524/

相关文章:

git - 还原失败的 merge 后重新 merge

linux - centos linux 上的 dotnet 恢复错误 : access to path denied

git - 在 pull 入 Git 之前我必须提交我的更改吗?

混帐客户端 : get user info from username

github - 如何删除 GitHub 状态检查?

git - 我如何吹走我解决 git 冲突的尝试

git - 不小心将临时分支推到原点,想丢弃它

git - 如何将图像添加到 Stash 中的自述文件

rest - GitHub API 返回错误的文件内容

git - 推送失败后如何撤消提交?