You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GitHub API提取修复Issue的Pull Request与提交信息?

如何通过GitHub API提取关联修复Issue的PR或提交记录

GitHub UI上显示的「Fixed by XXX」关联,本质是基于提交/PR描述里的关键词引用规则(比如fixes #7696、closes #7696这类格式),API不会直接返回这个关联关系,但可以通过以下几种方式获取:

方法1:查询Issue的事件记录

调用GET /repos/{owner}/{repo}/issues/{issue_number}/events接口,获取该Issue的所有操作事件。在返回结果中,找到event字段为closed的条目:

  • 如果Issue是被提交直接关闭的,该条目会包含commit_id字段,通过这个ID可以调用GET /repos/{owner}/{repo}/commits/{commit_id}获取提交详情,进而追踪到对应的PR(如果提交来自PR)。
  • 如果Issue是被PR合并关闭的,该条目会包含pull_request对象,直接就能拿到PR的编号和信息。

示例请求(针对你提到的Issue):

GET /repos/broadinstitute/gatk/issues/7696/events

方法2:通过搜索API定位关联内容

利用GitHub搜索API,搜索仓库中包含目标Issue引用关键词的PR或提交:

  • 搜索关联PR:
    GET /search/issues?q=repo:{owner}/{repo}+type:pr+"fixes #{issue_number}"
    
    可以把fixes换成closes、resolves等GitHub支持的关闭关键词,扩大搜索范围。
  • 搜索关联提交:
    GET /search/commits?q=repo:{owner}/{repo}+"fixes #{issue_number}"
    

注意:搜索API有请求速率限制,建议携带认证令牌(Personal Access Token)提升限额,同时处理好分页逻辑。

方法3:遍历PR的关联Issue(适合小仓库)

如果仓库规模不大,可以遍历所有PR,调用GET /repos/{owner}/{repo}/pulls/{pull_number}接口,查看返回结果中的closed_issues字段,该字段会列出当前PR关闭的所有Issue,从中筛选出目标Issue对应的PR。这种方法效率较低,不适合大型仓库。

关键注意点

  • 所有关联识别完全依赖于提交/PR描述中使用了GitHub官方支持的关键词,未使用关键词的关联无法通过API自动识别。
  • 调用API时建议使用认证令牌,避免触发速率限制影响请求。

内容的提问来源于stack exchange,提问作者Mehdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:57:19