如何通过API或CLI获取GitHub Issues的Tracked By关联关系?
如何通过API/CLI查找被特定Issue标记为“Tracked by”的关联Issue?
GitHub通过任务列表创建的“Tracked In”关联属于Issue内容内的结构化引用,不属于linked:<ISSUE-NUMBER>搜索语法覆盖的标准关联范畴,所以直接用搜索是查不到的。目前可行的方法只有以下两种:
1. 使用GitHub GraphQL API 查询
这是最可靠的方式,GraphQL API直接暴露了Issue任务列表项的引用数据。你可以通过查询目标Issue的taskItems字段,获取所有被标记为“Tracked by”的关联Issue/PR。
示例查询(替换其中的OWNER、REPO和ISSUE_NUMBER为实际值):
query { repository(owner: "OWNER", name: "REPO") { issue(number: ISSUE_NUMBER) { taskItems(first: 100) { nodes { state content referenced { ... on Issue { number title url } ... on PullRequest { number title url } } } } } } }
返回结果里的referenced字段会直接关联到对应的Issue或PR,这些就是被当前Issue追踪的项。
2. 借助GitHub CLI(gh)实现命令行查询
如果你习惯用命令行,可以结合gh工具调用GraphQL API,快速提取关联数据。示例命令:
gh api graphql -f query=' query { repository(owner: "OWNER", name: "REPO") { issue(number: ISSUE_NUMBER) { taskItems(first: 100) { nodes { referenced { ... on Issue { number title } ... on PullRequest { number title } } } } } } } ' --jq '.data.repository.issue.taskItems.nodes[] | select(.referenced != null) | .referenced'
这条命令会过滤掉无引用的任务项,只输出有“Tracked by”关联的Issue/PR编号和标题。
需要注意的是,GitHub的REST API和普通搜索功能目前都不支持直接检索这种任务列表关联,只能通过GraphQL API来获取这些数据。
内容的提问来源于stack exchange,提问作者surchs
相关产品推荐
相关产品推荐

