使用GitHub Compare API对比提交时files字段始终为空的问题
GitHub API Compare接口files字段为空的排查与解决方法
检查提交范围语法
你当前用的是main...feature/initial-scaffolding(三点语法),这种语法是对比两个分支的合并基础到各自最新提交的差异。如果两个分支完全一致,或者合并基础恰好是其中一个分支的顶端,就会返回空的files字段。建议换成两点语法main..feature/initial-scaffolding,直接对比两个分支顶端提交的差异,结果更精准。确认令牌权限配置
不管用经典Personal Access Token还是细粒度令牌,都要确保有目标仓库的读取权限:- 经典PAT需要勾选
repo权限 - 细粒度令牌要针对该仓库开启
Contents的读取权限
可以去GitHub的令牌设置页面重新核对权限是否正确配置。
- 经典PAT需要勾选
先验证网页端是否有差异
先在GitHub网页端手动对比这两个分支或提交,确认确实有文件变更。如果网页端也显示无差异,那API返回空files是正常结果,本身就没有变更。正确使用Accept头
当你设置Accept: application/vnd.github.diff或application/vnd.github.patch时,响应体是纯文本的diff/patch格式,不是JSON结构,所以直接看终端输出可能像空内容,但实际可以保存到文件查看:curl -XGET -H 'Authorization: token ACCESS_TOKEN_VALUE' -H 'Accept: application/vnd.github.diff' 'https://api.github.com/repos/myorg/myrepo/compare/main..feature/initial-scaffolding' > diff.txt如果要获取包含
files字段的JSON响应,不要加自定义Accept头,用默认的application/vnd.github.v3+json即可。改用提交哈希值发起请求
可能存在分支名拼写错误、大小写不一致或者重名分支的问题,建议直接用提交的完整哈希值替换分支名,比如:curl -XGET -H 'Authorization: token ACCESS_TOKEN_VALUE' 'https://api.github.com/repos/myorg/myrepo/compare/abc1234567890..def0987654321'
内容的提问来源于stack exchange,提问作者Elvis Oliveira
相关产品推荐
相关产品推荐

