You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Git仓库合并到另一仓库并保留对应分支的提交历史?

该需求完全可以实现,通过Git原生的远程仓库关联与无关历史合并功能即可完成,全程保留两个仓库的完整提交记录,合并后分支切换逻辑与原有使用习惯完全一致。

操作步骤

1. 预处理本地repo1

先进入本地repo1的工作目录,同步远程最新代码,避免本地版本落后产生额外冲突:

# 切换到master分支并拉取最新代码
git checkout master
git pull origin master

# 切换到release分支并拉取最新代码
git checkout release
git pull origin release

2. 关联repo2为repo1的远程源

将repo2添加为repo1的临时远程仓库,repo2地址可以是远程SSH/HTTPS地址,也可以是本地repo2的文件夹绝对路径:

git remote add repo2 <repo2地址>
# 执行以下命令验证关联成功,能看到repo2的fetch和push地址即可
git remote -v

3. 拉取repo2的所有分支数据

仅拉取repo2的提交记录,不会修改当前repo1的工作区内容,属于安全操作:

git fetch repo2

4. 合并repo2的master分支到repo1的master分支

# 切换到repo1的master分支
git checkout master
# 合并不相关仓库的master分支,Git 2.9及以上版本需要加--allow-unrelated-histories参数
git merge repo2/master --allow-unrelated-histories

如果两个仓库存在同名且内容冲突的文件,手动修改冲突文件后执行git add <冲突文件>,再执行git commit完成合并即可;无冲突则会自动生成合并提交。

5. 合并repo2的release分支到repo1的release分支

逻辑与合并master分支完全一致:

# 切换到repo1的release分支
git checkout release
# 合并repo2的release分支
git merge repo2/release --allow-unrelated-histories

同样处理完冲突后提交即可。

6. 效果验证

分别执行git checkout master和git checkout release切换分支,工作区会自动加载对应分支合并后的所有文件,同时包含原repo1和repo2同分支的全部内容;执行git log即可查看两个仓库的完整提交历史。
确认无误后可执行以下命令推送到repo1的远程仓库:

git push origin master
git push origin release
注意事项
  • 合并前建议先备份两个仓库的完整副本,避免误操作导致数据丢失
  • 如果不希望两个仓库的根目录文件混在一起,可以先在repo2的对应分支中将所有文件移动到自定义子目录,提交后再执行合并操作
  • 完成所有合并操作后,可执行git remote remove repo2删除临时添加的repo2远程源

内容的提问来源于stack exchange,提问作者Maurizio Reginelli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:36:01