如何将GitHub仓库的issues与discussions克隆迁移到其他仓库
仓库Issues与Discussions跨仓库迁移解决方案
以下方案同时支持公开/私有源仓库A向私有目标仓库B的迁移,可完整同步两类数据的正文、评论、标签、关联元信息。
方案1:GitHub CLI + 官方迁移扩展(推荐,适配绝大多数场景)
- 先安装GitHub CLI工具
gh,完成身份认证:执行gh auth login,按照提示完成账号权限认证,需要授予账号repo读写、discussions读写的完整权限,认证账号需同时拥有源仓库A的读取权限、目标仓库B的写入权限。 - 安装官方迁移扩展:执行
gh extension install github/gh-migration - 生成迁移清单,指定需要迁移的数据类型:
gh migration generate --source <仓库A所有者/仓库A名> --target <仓库B所有者/仓库B名> --include issues --include discussions - 核对生成的迁移清单内容无误后,执行迁移命令即可完成同步:
gh migration apply
提示:迁移完成后数据默认按照原创建时间排序,不会统一显示为迁移时间
方案2:GitHub API手动同步(适合需要自定义迁移规则的场景)
如果需要过滤迁移内容、修改数据格式后再导入,可以自行调用API实现:
- 拉取源仓库全量数据:
- Issues数据调用REST API获取:接口地址为
GET /repos/{owner}/{repo}/issues,携带state=all参数可获取已关闭、已打开的全部Issues,同时可拉取关联的评论、标签、里程碑信息 - Discussions数据需要调用GraphQL API查询,可一次性获取讨论的分类、正文、回复、点赞、关联Issue等全量元数据
- Issues数据调用REST API获取:接口地址为
- 将拉取到的数据格式化后,调用目标仓库的对应写入接口逐条导入,可在内容首部标注原作者、原创建时间保留溯源信息。
迁移失败常见排查点
Discussions迁移后无数据优先检查两个配置:
- 目标仓库B是否在仓库设置中开启了Discussions功能,私有仓库默认不会自动开启该功能
- 认证账号是否拥有目标仓库的Discussions写入权限,仅仓库普通读写权限无法操作Discussions数据,需要单独授予讨论管理权限
内容的提问来源于stack exchange,提问作者이준혁
相关产品推荐
相关产品推荐

