如何通过Azure DevOps REST API获取拉取请求的文件变更差异?
获取Azure DevOps拉取请求文件变更差异的REST API方案
要实现和Azure DevOps拉取请求(PR)中Files标签一致的文件变更查询,你需要使用针对Pull Request的专属REST API,而非单个Commit的变更接口:
1. 获取PR的所有变更文件列表
使用Pull Request Changes接口可以拿到PR中所有变更文件的基本信息(变更类型、路径等):
GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}/changes?api-version=7.2
2. 获取具体文件的差异内容
如果需要查看文件的具体变更差异(和Files标签里的代码对比一致),可以使用Git Diff接口:
- 通过Commit ID对比:
GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/diffs/commits?baseCommit={baseCommitId}&targetCommit={targetCommitId}&api-version=7.2
其中baseCommitId是PR目标分支的基准Commit,targetCommitId是PR源分支的头部Commit。
- 通过分支/PR引用对比(更贴合PR场景):
GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/diffs?baseVersion=refs/heads/{targetBranchName}&targetVersion=refs/pull/{pullRequestId}/merge&api-version=7.2
这种方式直接基于PR的目标分支和合并引用获取完整差异,和Files标签的展示逻辑一致。
注意事项
- 两个接口结合使用:先通过Pull Request Changes接口筛选出变更的文件,再用Diff接口获取对应文件的详细差异内容。
- 确保请求中携带有效的Azure DevOps认证信息(如PAT令牌)。
内容的提问来源于stack exchange,提问作者meAbab
相关产品推荐
相关产品推荐

