You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用GitHub REST-API下载两个标签版本间的所有修改文件

实现方案

前置准备

  • 生成GitHub个人访问令牌(PAT),权限勾选repo范围,私有仓库必须携带令牌才能请求,公共仓库携带令牌可获得更高的API请求限额
  • 确认仓库的所有者名(owner)、仓库名(repo)、两个待比对标签的名称(如v1.0.0为base版本标签,v2.0.0为head版本标签)

步骤1:获取两个版本的变更文件列表(已持有列表可直接跳过)

调用GitHub Compare API即可直接得到两个标签之间的全部变更文件,请求示例(curl格式):

curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer 替换为你的PAT令牌" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/替换为owner名/替换为仓库名/compare/替换为base标签...替换为head标签

返回结果的files数组即为所有变更文件,每个条目内的filename字段为文件的相对路径。

步骤2:批量下载变更文件

调用GitHub Contents API即可下载指定版本的对应文件,接口规则为:

  • 要下载base版本的文件,请求参数ref填base标签名
  • 要下载head版本的文件,请求参数ref填head标签名
  • 请求头添加Accept: application/vnd.github.raw可直接获取原始文件内容,无需自行解码base64

单文件下载请求示例:

curl -L \
  -H "Accept: application/vnd.github.raw" \
  -H "Authorization: Bearer 替换为你的PAT令牌" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  "https://api.github.com/repos/替换为owner名/替换为仓库名/contents/替换为文件相对路径?ref=替换为对应版本标签" \
  -o 本地保存路径/文件名

如果是批量下载,直接遍历你已有的变更文件路径列表,循环执行上述请求即可。

注意事项

  • 未认证的GitHub API请求每小时限额60次,认证请求每小时限额5000次,文件数量较多时必须携带PAT避免被限流
  • 单文件大小超过100MB时无法使用Contents API下载,需要调用Git Blob API获取对应文件内容
  • 下载时注意保持本地的文件目录结构和仓库内的相对路径一致,避免文件保存混乱

内容的提问来源于stack exchange,提问作者Merav Taviv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:45:03