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

如何通过GitHub v4 API的GraphQL获取指定提交后的所有提交?

如何用GitHub v4 API获取指定提交之后的所有提交

当然可以通过GitHub v4 API实现这个需求!你之前的查询没返回结果,问题出在before参数的格式上——GitHub GraphQL API的before字段只需要提交的纯oid字符串,不需要额外加 0后缀。

正确的GraphQL查询

下面是修正后的查询,它能实现和git log d1b7ccc044be72490525a3fe1b819440f4927cba..HEAD完全一致的效果:

{
  repository(owner: "karthikeayan", name: "puhar-petti") {
    ref(qualifiedName: "master") {
      target {
        ... on Commit {
          history(last: 100, before: "d1b7ccc044be72490525a3fe1b819440f4927cba") {
            pageInfo {
              hasNextPage
              endCursor
            }
            edges {
              node {
                oid
                messageHeadline
                messageBody
              }
            }
          }
        }
      }
    }
  }
}

关键说明

  • 提交历史在API中是按从新到旧的顺序返回的,before参数指定的是“截止到该提交之前”的历史(也就是比该提交更新的提交),正好对应git log <commit>..HEAD的逻辑。
  • 单次查询最多返回100个提交,如果目标提交之后的提交数量超过100,需要用pageInfo里的endCursor和hasNextPage做分页:当下一次查询时,把before的值替换成上一次返回的endCursor,直到hasNextPage为false,就拿到了所有符合条件的提交。
  • 一定要确保before参数是提交的完整oid,不要添加任何多余字符,这是你之前查询无结果的核心原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:00:34