如何通过GitHub API获取指定commit ID对应版本的仓库全量文件列表
GitHub API查询指定commit版本全量文件列表方法
你当前使用的/repos/{owner}/{repo}/git/trees/{tree_sha}接口本身就支持将路径中的分支名替换为commit SHA,直接获取对应提交版本的全量文件树,返回格式和你现有master分支查询结果完全一致。
具体调用方式
将你现有接口URL中trees后的master替换为目标commit的SHA值即可,保留recursive=1参数实现全目录递归获取。
针对你给出的示例commit(SHA:4916b6cd7486e2e0dd6ce5417ae4e6842356954a),对应的调用URL为:https://api.github.com/repos/kubernetes/kubernetes/git/trees/4916b6cd7486e2e0dd6ce5417ae4e6842356954a?recursive=1
注意事项
- 该接口单次递归请求最多返回10万个文件、总响应大小不超过7MB,若仓库过大超出限制,返回结果中会携带
truncated: true标记,此时你可以先查询顶级目录树,再逐个发起子目录的树查询请求拆分获取 - 未认证状态下GitHub API请求限速为每小时60次,若请求频次较高,建议在请求头中携带个人访问令牌(PAT),可将限速提升至每小时5000次
- 你也可以通过先查commit详情再查树的方式获取相同结果,步骤如下:
- 调用
https://api.github.com/repos/kubernetes/kubernetes/git/commits/目标commit SHA获取commit详情 - 从返回结果的
tree.sha字段提取该commit对应的根目录树SHA,再用该SHA调用树查询接口即可
- 调用
内容的提问来源于stack exchange,提问作者Praveen G
相关产品推荐
相关产品推荐

