如何通过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
相关产品推荐
相关产品推荐

