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

如何在Azure DevOps中通过commit hash获取合并到master的Pull request ID

可行实现方案

方案1:基于Git托管平台API调用(适合流水线内置实现)

不同主流平台的调用逻辑如下:

  • GitHub:调用REST API的 /search/issues 接口,请求参数设置 q=<commit_hash>+type:pr+is:merged+repo:<你的仓库命名空间/仓库名>,返回结果中直接获取PR编号;如果用GitHub Actions流水线,可直接使用内置变量${{ github.event.pull_request.number }},或者通过gh命令行工具执行gh pr list --search <commit_hash> --state merged --base master直接输出PR ID
  • GitLab:调用REST API的 /projects/<项目ID>/repository/commits/<commit_hash>/merge_requests 接口,过滤target_branch为master且state为merged的结果即可拿到PR(GitLab中称Merge Request)ID;如果是GitLab CI流水线,可直接用预定义变量CI_MERGE_REQUEST_IID
  • Gitee:调用REST API的 /repos/<所有者>/<仓库名>/commits/<commit_hash>/pulls 接口,过滤base为master且state为merged的结果获取PR ID

方案2:基于本地Git命令查询(适合流水线有代码仓库克隆权限的场景)

如果你的流水线在执行阶段已经克隆了完整的仓库代码,可直接执行以下命令查询:

git log --merges --grep="<commit_hash>" --oneline master

输出结果中会包含合并PR的提交记录,标准的PR合并提交信息格式为Merge pull request #<PR_ID> from <分支名>,直接提取#后面的数字即可得到PR ID。
注意:该方案仅适用于仓库开启了PR合并生成合并提交的配置,如果使用Squash合并或Rebase合并策略,需要用方案1的API方式查询

后续操作说明

拿到PR ID后,可继续调用对应平台的API拉取PR关联的所有提交记录、变更文件列表,也可以通过Git命令git log <PR源分支>...master获取提交信息,git diff <PR源分支>...master获取变更文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:15:07