如何将两个关联仓库的提交历史按顺序堆叠合并到同一个仓库
两个Git仓库提交历史堆叠合并操作步骤
前置准备
提前备份V1、V2两个仓库的所有代码和提交记录,避免操作失误丢失数据,同时确保本地环境已正确安装Git。
具体操作步骤
- 在本地创建空文件夹作为最终合并后的目标仓库,初始化Git
mkdir merged-repo && cd merged-repo git init
- 添加V1仓库为远程源,拉取V1的全量提交历史
# 后面的路径可以填本地V1仓库的本地路径,也可以填V1的远程仓库地址 git remote add v1 /path/to/your/v1/repo git fetch v1
- 将V1的主干分支切换为当前仓库的主分支,此时本地仓库已包含完整的V1提交历史
# 若V1的主分支名为master,将下方的main替换为master即可 git checkout v1/main -b main
- 添加V2仓库为第二个远程源,拉取V2的全量提交历史
# 同样可填本地路径或V2的远程仓库地址 git remote add v2 /path/to/your/v2/repo git fetch v2
- 通过rebase操作将V2的所有提交历史接在V1历史的末尾
git rebase main v2/main
由于你V2的初始代码完全基于V1最后一次提交的内容,正常执行该命令不会出现代码冲突;如果出现冲突,按提示修改冲突文件后执行
git add <冲突文件名>,再执行git rebase --continue即可完成后续操作
- 将合并完成的全量历史同步到主分支
git checkout main git merge v2/main
- 验证提交历史是否符合预期
git log --oneline --graph
执行后可看到提交顺序为V1的所有提交按时间正序排列,之后紧接着V2的所有提交按时间正序排列,所有提交记录完整无缺失即操作完成。
内容的提问来源于stack exchange,提问作者Ahmed
相关产品推荐
相关产品推荐

