如何将GitHub上的现有仓库设为新仓库的子仓库?附具体迁移需求
将现有GitHub仓库转为新仓库子仓库的实现方案
当然可以把FEM-calculator-project和FEM-Landing-page迁移到frontendmentor-challenges仓库作为子仓库,主流有两种可行方案,分别适用于不同场景:
方案一:Git Submodules(保持子仓库独立开发)
这种方式会保留子仓库的独立Git历史,适合后续仍需单独维护子仓库的场景。
针对你的FEM仓库迁移步骤:
- 创建新的
frontendmentor-challenges仓库,然后克隆到本地:
git clone git@github.com:你的用户名/frontendmentor-challenges.git cd frontendmentor-challenges
- 将两个现有仓库添加为子模块:
git submodule add git@github.com:你的用户名/FEM-calculator-project.git git submodule add git@github.com:你的用户名/FEM-Landing-page.git
- 提交并推送更改到远程:
git add .gitmodules FEM-calculator-project FEM-Landing-page git commit -m "Add FEM challenge repos as submodules" git push
- 后续克隆这个新仓库时,需要加上参数拉取子仓库内容:
git clone --recurse-submodules git@github.com:你的用户名/frontendmentor-challenges.git
方案二:Git Subtree(合并子仓库内容到主仓库)
这种方式会把子仓库的代码合并到主仓库的指定目录,子仓库的历史会被压缩为一个提交,适合不需要单独维护子仓库的场景。
针对你的FEM仓库迁移步骤:
- 克隆新的
frontendmentor-challenges仓库到本地:
git clone git@github.com:你的用户名/frontendmentor-challenges.git cd frontendmentor-challenges
- 添加子仓库为远程源,然后拉取内容到指定目录:
# 处理计算器项目 git remote add calculator-repo git@github.com:你的用户名/FEM-calculator-project.git git subtree add --prefix=FEM-calculator-project calculator-repo main --squash # 处理着陆页项目 git remote add landing-repo git@github.com:你的用户名/FEM-Landing-page.git git subtree add --prefix=FEM-Landing-page landing-repo main --squash
- 提交并推送更改:
git commit -m "Merge FEM challenge repos via subtree" git push
- 后续若要从原仓库更新内容,执行:
git subtree pull --prefix=FEM-calculator-project calculator-repo main --squash
通用迁移方法总结
Git Submodules 通用步骤
- 创建并克隆目标新仓库到本地
- 执行
git submodule add <子仓库远程地址>添加子模块 - 提交
.gitmodules文件和子仓库目录到远程 - 克隆新仓库时需使用
--recurse-submodules参数拉取完整内容
Git Subtree 通用步骤
- 创建并克隆目标新仓库到本地
- 用
git remote add <自定义别名> <子仓库远程地址>添加子仓库远程源 - 执行
git subtree add --prefix=<目标目录> <自定义别名> <子仓库分支> --squash合并内容 - 提交并推送合并后的更改
内容的提问来源于stack exchange,提问作者Julien
相关产品推荐
相关产品推荐

