场景:平时自己研究学习的小项目比较多,有前端vue的,有后端C#的,还有混合开发Blazor的,这些研究学习的多个项目是独立的代码仓库,现在各个研究学习的成果已经验证实现,下一步要把这些内容整合到一个项目里面进行开发。那么问题来了,如果现在各仓库的代码拷贝汇总到一个项目再推送到一个新仓库,会丢失之前验证研究的历史提交记录,而我想保留验证研究的历史记录。
下面的方法就是用SourceTree将多个仓库合并到一个新仓库并保留完整的历史记录。
使用git的subtree功能来保留原始提交历史。
步骤 1:创建新仓库
- 在 SourceTree 中点击 新建仓库 > 创建本地仓库
- 指定新仓库路径(如 MergeProject)
- 勾选 创建仓库时创建 README 文件(确保有初始提交)
- 点击 创建
步骤 2:合并第一个仓库到子目录
- 在SourceTree上打开命令行模式
- 执行命令(保留历史):
git remote add MyApps http://192.168.1.123:3000/administrator/MyApps.git
git fetch MyApps
git subtree add --prefix=MyApps MyApps/master
- 在 SourceTree 点击 刷新,查看提交历史
步骤 3:合并第二个仓库到子目录
重复步骤2
步骤4:推送到新远程仓库(可选)
- 在 SourceTree 点击 设置 > 远程
- 添加新的云端仓库地址(GitHub/GitLab)
- 点击 推送 上传合并后的仓库
关键原理说明
常见问题处理
问题1: 确认初始提交状态
git commit --allow-empty -m "初始提交"
出现其他问题: 问ai吧,ai比我更懂你。