如何使用Azure DevOps REST API获取两次提交间的提交列表
Azure DevOps Git Commits API 返回全部提交的问题解决
我尝试使用Azure DevOps的Git提交REST API,指定了searchCriteria.fromCommitId和searchCriteria.toCommitId参数,但API返回了仓库的全部提交,而非预期的两个提交之间的提交列表。使用的API请求地址如下:https://dev.azure.com/xxx/xxxx/_apis/git/repositories/xxxxx/commits?api-version=7.0&searchCriteria.fromCommitId={fromcommit}&searchCriteria.toCommitId={tocommit}
问题原因及修复方案
核心原因:
fromCommitId和toCommitId仅能筛选同一提交链上、以toCommitId为终点、fromCommitId为祖先的提交。如果两个提交无直接父子/祖先关系(比如跨分支),API会忽略范围条件返回全部提交;另外提交ID格式错误(如短哈希、分支名)也会导致筛选失效。修复步骤:
- 确认提交关联性:先在Azure DevOps网页端的提交历史中,检查
fromCommitId是否是toCommitId的祖先提交(属于同一分支的提交链路)。若跨分支,需改用对比参数。 - 校验提交ID格式:确保
{fromcommit}和{tocommit}是完整的40位提交哈希值,不要使用短哈希或分支名称。 - 跨分支范围请求写法:如果需要获取两个不同分支提交的差异范围,替换参数为:
?api-version=7.0&searchCriteria.compareVersion.version={fromcommit}&searchCriteria.compareVersion.versionType=commit&searchCriteria.targetVersion.version={tocommit}&searchCriteria.targetVersion.versionType=commit - 限定分支范围(可选):若只需特定分支上的提交,添加分支筛选参数:
&searchCriteria.itemVersion.version=目标分支名&searchCriteria.itemVersion.versionType=branch
- 确认提交关联性:先在Azure DevOps网页端的提交历史中,检查
内容的提问来源于stack exchange,提问作者Anurag mp
相关产品推荐
相关产品推荐

