如何通过Azure DevOps API获取分支链式提交的文件列表或提交哈希?
无需创建PR获取Azure DevOps分支链式提交的文件列表/提交哈希
你可以借助Azure DevOps的REST API直接实现需求,无需创建拉取请求,以下是两种高效方案:
方案1:用Compare Commits API一次性获取差异(推荐)
这个API可以直接对比两个分支(比如你的特性分支和基准分支,如main),返回所有链式提交的哈希、作者信息,以及对应的文件变更列表,适合大型仓库的高效查询。
请求示例(curl)
curl -u "用户名:个人访问令牌(PAT)" \ "https://dev.azure.com/{组织名}/{项目名}/_apis/git/repositories/{仓库ID}/commits/compare?baseVersion={基准分支名}&baseVersionType=branch&targetVersion={目标分支名}&targetVersionType=branch&api-version=7.1-preview.1"
返回结果说明
commits数组:包含所有链式提交的哈希值、提交信息、作者等完整数据changeEntries数组:列出所有变更文件的路径、变更类型(添加/修改/删除),以及对应的提交关联信息
方案2:先获取分支提交历史,再逐个查询文件变更
如果需要单独提取每个提交的文件列表,可以分两步操作:
步骤1:获取分支的提交历史
curl -u "用户名:PAT" \ "https://dev.azure.com/{组织名}/{项目名}/_apis/git/repositories/{仓库ID}/commits?searchCriteria.itemVersion.version={分支名}&searchCriteria.itemVersion.versionType=branch&api-version=7.1-preview.1"
返回的value数组包含该分支的所有提交哈希。
步骤2:根据提交哈希查询对应文件
对每个提交哈希,调用以下API获取文件列表:
curl -u "用户名:PAT" \ "https://dev.azure.com/{组织名}/{项目名}/_apis/git/repositories/{仓库ID}/commits/{提交哈希}/changes?api-version=7.1-preview.1"
注意事项
- 个人访问令牌(PAT)需要配置
Code (Read)权限 - 方案1的对比API是最高效的,尤其适合大型仓库,避免多次请求的性能损耗
- 可以根据需求筛选返回字段,减少数据传输量
内容的提问来源于stack exchange,提问作者Jepper
相关产品推荐
相关产品推荐

