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

如何快速获取GitHub组织下所有仓库的总提交数?

高效统计GitHub组织全仓库提交数的替代方案

1. 优先用GitHub GraphQL API批量查询

这是效率最高的方案,GraphQL允许你在单次请求中拉取组织下多仓库的提交统计,彻底避免逐个调用REST接口的低效问题。

示例查询(替换成你的组织名称):

query {
  organization(login: "YourOrgName") {
    repositories(first: 100) {
      nodes {
        name
        defaultBranchRef {
          target {
            ... on Commit {
              history {
                totalCount
              }
            }
          }
        }
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
}

这个查询会返回组织下前100个仓库的名称,以及对应默认分支的总提交数。如果仓库数量超过100,利用pageInfo里的endCursor参数做分页查询即可。调用时需要携带拥有repo权限的GitHub令牌,你可以用curl、GraphQL Explorer或者任何HTTP客户端发起请求。

2. 用GitHub CLI结合并行处理提速

如果不想写GraphQL,用GitHub CLI(gh)配合shell工具也能比逐个调用REST快不少:

  1. 先导出组织所有仓库列表:
gh repo list YourOrgName --limit 1000 --json name > repos.json
  1. 用xargs并行查询(-P参数控制并发数,避免触发API限制):
jq -r '.[].name' repos.json | xargs -P 8 -I {} gh api repos/YourOrgName/{}/commits --header "Accept: application/vnd.github.v3+json" --jq '"{}: \(.total_count)"'

注意:GitHub API有请求频率限制,并发数别设太高,一般8-10比较稳妥。

3. 本地克隆仓库后离线统计

如果需要频繁统计,建议一次性克隆组织所有仓库到本地,之后定期拉取更新,用git命令快速统计:

# 批量克隆组织仓库(--parallel开启并行克隆)
gh repo clone YourOrgName/* --parallel
# 遍历统计每个仓库提交数
for dir in */; do
  repo_name=${dir%/}
  commit_count=$(git -C "$dir" log --oneline | wc -l)
  echo "$repo_name: $commit_count"
done

这种方式适合长期统计需求,本地缓存后每次统计几乎无网络开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:28:19