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

如何通过GitHub API获取指定分支自特定日期或commit ID起的所有提交

问题原因

你遇到的since参数不生效问题,90%以上的场景是shell命令行中&符号的特殊解析导致的。在Linux、macOS等系统的默认shell环境中,&是将命令放到后台执行的特殊标识符,你直接运行未做处理的带&的URL时,shell会把&之前的请求内容作为单独命令后台执行,since参数根本没有被传递到GitHub API请求中。


修复方案

方案1(最推荐):用单引号包裹完整URL

直接用单引号把整个请求URL包起来,即可避免shell解析URL中的特殊字符,命令示例:

curl 'https://github.mycompany.com/api/v3/repos/&owner/&repo/commits?sha=branchname&since=2021-10-19T00:00:00Z'

方案2:转义URL中的&符号

如果不想用引号包裹URL,可以把URL里的&转义为\&,命令示例:

curl https://github.mycompany.com/api/v3/repos/&owner/&repo/commits?sha=branchname\&since=2021-10-19T00:00:00Z

补充注意事项

  • 时间格式验证:你使用的2021-10-19T00:00:00Z格式完全符合GitHub API要求的ISO 8601 UTC时间标准,如果你需要查询的是本地时区的时间段,需要先转换为UTC时间再传入参数,否则会出现查询结果不符合预期的问题。
  • 分页处理:GitHub API默认单次最多返回30条提交记录,你可以追加per_page=100参数把单次返回上限提升到100条,如果符合条件的提交超过100条,需要通过响应头的Link字段获取下一页地址完成分页拉取。
  • 增量拉取优化:如果是定期增量拉取提交,比日期查询更精准的方案是记录上次拉取到的最新commit SHA,下次查询时直接对比分支和该commit的差异,不会出现时区误差、提交时间回写等问题导致的漏拉/重复拉取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:36:03