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

关于GitHub API获取最近N个公开仓库及since参数的技术问询

GitHub API 「列出公开仓库」端点的 since 参数详解

我来帮你把这个参数的用法讲清楚,刚好我之前做过仓库同步的需求,对这块挺熟的:

1. since 参数的核心作用

它是用来做增量拉取/分页续更的标记。你传入一个仓库的ID,API就会返回所有ID严格大于这个值的公开仓库。因为GitHub的仓库ID是全局自增的——新创建的仓库ID一定比旧的大,所以这个参数本质上是帮你过滤出「在某个仓库之后创建的所有仓库」,非常适合做定期同步之类的场景。

2. 它确实返回ID大于since值的仓库吗?

没错,就是这个逻辑。只要你传的是有效的仓库ID,返回结果里所有仓库的ID都会比它大,而且默认是按ID从小到大(也就是创建时间从早到晚)排序的。

3. 如何获取最近50个公开仓库?

这里得先纠正一个误区:since参数其实不是直接「拿最新n个」的最佳方式,它更适合增量同步。如果要直接拿最近50个,用排序参数会更简单高效:

直接获取最近50个的最优写法

GitHub的这个端点支持sort和direction参数,你可以直接指定按创建时间降序排列,取前50个:

GET /repositories?per_page=50&sort=created&direction=desc

这样返回的结果就是刚创建的50个公开仓库,一步到位。

如果一定要用since参数实现(适合增量场景)

如果是基于之前的拉取记录,要获取「上次拉取之后新创建的50个」,步骤是:

  • 第一步:记下你上次拉取到的所有仓库里最大的那个ID(假设是LAST_MAX_ID)
  • 第二步:调用API时带上since参数,同时限制数量:
    GET /repositories?per_page=50&since=LAST_MAX_ID
    
    这样返回的就是上次拉取之后新创建的最多50个仓库。

要是你是第一次拉取,想通过since拿到最新的50个,操作会比较麻烦(因为仓库ID可能有间隙,无法直接通过ID倒推数量),所以还是推荐用前面的排序参数写法。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:47:32