如何合并两年前拆分的两个Git仓库并保留全部开发历史
合并两个拆分Git仓库并保留完整历史的操作步骤
前置准备
选择保留了master、develop分支的第一个仓库作为合并基准,避免后续分支重建操作。
操作步骤
- 第一步:克隆基准仓库到本地,确保本地代码为最新状态
git clone <第一个仓库的远程地址> cd <基准仓库本地目录>
- 第二步:将第二个仓库作为远程源导入到当前基准仓库,拉取其所有提交历史
# 添加第二个仓库为远程源,命名为repo-2 git remote add repo-2 <第二个仓库的远程地址> # 拉取第二个仓库的全部分支和提交记录 git fetch repo-2
执行完成后可通过git branch -a查看导入的第二个仓库的所有远程分支。
- 第三步:合并第二个仓库的主分支到基准仓库的目标分支
以合并到基准仓库的develop分支为例,合并到master分支逻辑完全一致:
# 切换到基准仓库的目标分支 git checkout develop # 允许无关联历史合并,合并第二个仓库的主分支(若第二个仓库主分支为main则替换为main) git merge repo-2/master --allow-unrelated-histories
冲突处理规则
因为当初拆分时两个仓库各自删除了对方留存的文件,几乎不会出现内容冲突,仅可能出现「本仓库已删除的文件在第二个仓库有更新」的提示,直接选择保留第二个仓库的对应文件即可。若有少量内容冲突,手动编辑解决后执行git add <冲突文件路径>标记冲突已解决。
冲突处理完成后执行提交:
git commit
- 第四步:同步其他需留存的分支(可选)
如果第二个仓库还有需要保留的开发分支,重复第三步的逻辑合并到基准仓库的对应分支,或单独创建新分支留存第二个仓库的历史分支即可。 - 第五步:验证历史并推送远程
合并完成后通过git log可查看完整提交记录,两个仓库的所有历史会按提交时间顺序完整排列,无丢失。验证无误后推送到基准仓库的远程地址即可:
git push origin develop
内容的提问来源于stack exchange,提问作者LiohAu
相关产品推荐
相关产品推荐

