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

如何通过Azure DevOps API检查Pull Request的所有变更是否已合并?

检查Azure DevOps Pull Request所有变更是否已合并到目标分支的API解决方案

Azure DevOps API确实没有直接返回浏览器界面中"所有变更已合并"的现成字段,但可以通过以下两种方式实现需求:

方法一:对比源分支与目标分支的提交差异

  1. 获取PR基础信息
    调用Pull Requests - Get API拿到PR的状态、源分支和目标分支名称:

    GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}?api-version=7.1-preview.1
    

    重点关注status字段(completed表示PR已合并)、sourceRefName和targetRefName。

  2. 对比分支提交
    如果PR已合并,调用Commits - Get Compare API对比源分支和目标分支的提交差异:

    GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits?baseVersion={targetRefName}&targetVersion={sourceRefName}&api-version=7.1-preview.1
    
    • 如果返回的提交列表为空,说明源分支的所有变更都已合并到目标分支
    • 如果有返回提交,要么是PR合并后源分支新增了提交,要么是合并过程中存在未同步的变更

方法二:验证PR关联提交是否存在于目标分支

  1. 获取PR的所有关联提交
    调用Pull Requests - Get Commits API拿到PR包含的所有提交SHA:

    GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}/commits?api-version=7.1-preview.1
    
  2. 逐个验证提交是否在目标分支
    对每个提交SHA,调用Commits - Get API检查该提交是否属于目标分支:

    GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitSha}?api-version=7.1-preview.1
    

    查看返回结果中的parents和refNames字段,确认提交是否存在于目标分支的提交历史中。

关于冲突信息滞后的处理

Azure DevOps的PR状态存在缓存机制,若遇到冲突信息更新不及时的情况:

  • 部分API支持添加bypassCache=true参数强制刷新缓存(比如PR详情API)
  • 若参数不生效,建议等待3-5分钟后重新查询,避免获取到过时状态

特殊情况处理

如果PR是通过** squash merge** 或 rebase merge 方式合并的,源分支的提交SHA会与目标分支中的提交SHA不一致,此时需要对比提交的具体变更内容:
调用Commits - Get Changes API获取提交的diff内容,再与目标分支对应文件的最新版本对比,确认变更是否已同步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:30:47