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

如何通过GitHub API获取所有拥有写入权限的仓库(含团队权限)?

高效获取所有拥有写入权限的GitHub仓库

最优方案:使用GitHub GraphQL API

GitHub REST API在处理团队权限关联的仓库过滤时存在局限性,而GraphQL API可以直接在查询阶段筛选出拥有写入权限的仓库,无需事后逐个校验,大幅提升效率。

示例查询代码

query GetReposWithPushAccess {
  viewer {
    repositories(
      first: 100
      affiliations: [OWNER, COLLABORATOR, ORGANIZATION_MEMBER]
      orderBy: {field: NAME, direction: ASC}
    ) {
      nodes {
        nameWithOwner
        permissions {
          push
        }
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
}

关键细节说明

  • 通过affiliations参数覆盖所有可能关联的仓库类型:个人拥有、直接协作者、组织成员
  • 直接在查询中通过permissions.push字段筛选出拥有写入权限的仓库,省去后续批量校验步骤
  • 支持分页机制:first:100为单页最大返回数量,通过pageInfo中的endCursor和hasNextPage字段实现翻页获取全部结果

额外优化建议

  • 若需要同时获取仓库的Pull Requests,可以在同一个GraphQL查询中嵌套pullRequests字段,直接关联获取目标数据,无需二次调用API
  • 若坚持使用REST API,可先调用GET /user/orgs获取所有加入的组织,再对每个组织调用GET /orgs/{org}/repos并通过permissions.push过滤,但该方式效率远低于GraphQL方案,尤其当组织数量较多时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 07:12:33