Github GraphQL API返回结果与仓库页面显示值不符的技术问题
排查GitHub API v4返回数据与仓库页面不符的问题
我来帮你梳理这两个问题的原因和解决办法:
1. 发布数量(releases totalCount)不符
GitHub GraphQL API 的 releases 字段默认仅统计正式发布的版本(排除预发布版本和草稿版本),但仓库页面会展示所有可见的发布(包括带 beta、rc 等标签的预发布版本),这就是统计数不一致的核心原因。
要让API返回和页面一致的发布数量,只需在 releases 字段中添加 includePrereleases: true 参数(如果需要包含草稿,再加 includeDrafts: true)。修改后的查询语句如下:
{ repository(owner: "tensorflow", name: "tensorflow") { id name releases(includePrereleases: true) { totalCount } pushedAt } }
2. 最后提交时间(pushedAt)差异
你查询的 pushedAt 代表整个仓库的最后一次推送时间——这个时间可能来自任意分支的推送(比如维护分支的更新),而仓库页面显示的通常是默认分支(如main/master)的最新提交时间,二者概念完全不同。
如果要获取和页面一致的默认分支最新提交时间,需要查询默认分支的提交信息,修改后的查询语句如下:
{ repository(owner: "tensorflow", name: "tensorflow") { id name releases(includePrereleases: true) { totalCount } defaultBranchRef { target { ... on Commit { committedDate author { name } } } } } }
这里的 committedDate 就是默认分支的最后提交时间,和仓库页面展示的内容一致。
内容的提问来源于stack exchange,提问作者Shantanu




