本文是一份将两个完全独立、无关联历史的 Git 仓库合并到一个新仓库(Monorepo)的完整操作指南。我们将把每个旧仓库的内容及其完整提交历史,迁移到新仓库的不同子目录中。
核心思路
我们的目标是创建一个全新的仓库 sushang-combined
,并将 sushang-v1
和 sushang-v2
两个仓库的所有内容和历史记录,分别完整地移入 sushang-combined
下的 sushang-v1/
和 sushang-v2/
子目录中。
第一阶段:环境准备
首先,创建工作区,并克隆所有需要的仓库。
1 | # 1. 创建一个专门的工作目录 |
第二阶段:重构源仓库
此阶段是关键。我们需要在每个源仓库中,将所有文件移入一个与仓库同名的子目录。这个过程需要对 sushang-v1
和 sushang-v2
分别执行一次。
下面以 sushang-v1
为例:
1 | # 1. 进入 sushang-v1 的本地克隆目录 |
请返回上一级目录,对 sushang-v2
仓库重复上述 1-5 步。
第三阶段:执行合并
现在,所有准备工作就绪,可以开始真正的合并操作。
1 | # 1. 返回合并目标仓库 |
第四阶段:发布到 GitHub
将本地合并好的新仓库推送到远程。
1 | # 1. 在 GitHub 上创建一个新的、空的仓库,例如 sushang-combined |
第五阶段:归档旧仓库
为了避免混淆,并完整保留 Issues、Pull Requests 等宝贵信息,最佳实践是归档(Archive)而不是删除旧仓库。
对 sushang-v1
和 sushang-v2
在 GitHub 上的仓库,分别执行以下操作:
- 更新仓库描述:在仓库主页点击 “Edit”,修改描述,明确指出项目已归档,并提供新仓库
sushang-combined
的链接。例如:“**[ARCHIVED]** Development continues at [link to sushang-combined].” - 更新 README:在
README.md
文件顶部添加醒目通知,引导访问者前往新仓库。 - 执行归档:
- 进入仓库的
Settings
页面。 - 滚动到底部的
Danger Zone
(危险区域)。 - 点击
Archive this repository
(归档此仓库)。 - 按提示输入仓库名称进行确认。
- 进入仓库的
至此,您已成功将两个独立仓库完整地合并为一个,并完成了所有后续整理工作。