本地合并多个仓库,保留Commit历史

本地合并多个仓库

当我用git管理我本地仓库A的开发内容的时候,想将某个小组件B也引入我的仓库。但我不想直接复制代码,而是想将小组件B的git 历史也导入到A。那么这篇文章可以给你一定的启发。

1. 准备仓库

假设你有两个本地仓库:

  • repoA(你要合并到的仓库)
  • repoB(你要合并的仓库)

2. 在 repoA 中添加 repoB 作为远程仓库

导航到 repoA,并使用 repoB 的本地文件路径添加它:

(如果是win中使用git进行,最好是使用相对路径)

bash 复制代码
cd /path/to/repoA
git remote add repoB /path/to/repoB

3. 从 repoB 获取历史记录

获取 repoB 的提交和分支:

bash 复制代码
git fetch repoB

4. 将 repoB 合并到 repoA

repoB 的历史记录合并到 repoA。例如,如果 repoB 的默认分支是 main

bash 复制代码
git merge repoB/main --allow-unrelated-histories

--allow-unrelated-histories 标志是必需的,因为这两个仓库最初有无关的历史记录。

5. 解决冲突(如果有)

如果有冲突,请手动解决。使用 git status 识别冲突,编辑文件,然后暂存并提交更改:

bash 复制代码
git add <conflicted-files>
git commit

6. 清理

如果不再需要 repoB 的远程仓库,可以移除它:

bash 复制代码
git remote remove repoB

示例

假设:

repoA 位于 /Users/username/projects/repoA

repoB 位于 /Users/username/projects/repoB

以下是合并它们的步骤:

bash 复制代码
cd /Users/username/projects/repoA
git remote add repoB /Users/username/projects/repoB
git fetch repoB
git merge repoB/main --allow-unrelated-histories

关键注意事项

• 备份:在合并之前,始终备份你的仓库(可以将两个仓库都进用压缩包打一个包,确认合并良好后,再删除这个备份)。

• 无关历史记录:如果仓库有无关的历史记录,请使用 --allow-unrelated-histories

• 测试:验证合并后的仓库,确保一切正常工作。

这种方法完全在本地操作,不需要远程服务器。

参考文献

以下网页、视频、工具,在不同程度帮助我学习了本文章的内容,在此对提供帮助的技术前辈表示感谢~

  1. AIGC声明: DeepSeek-V3 腾讯元宝网页版本;
相关推荐
暮云星影3 小时前
git版本发布
git·gitee·github·gitea
m4Rk_3 小时前
【论文阅读】Agent 记忆机制(41):Agentic Plan Caching——将历史执行轨迹转化为可复用的计划记忆
论文阅读·人工智能·学习·开源·github
本地化文档3 小时前
poethepoet-docs-l10n
python·github·gitcode·sphinx
独隅4 小时前
VS Code Git 工作树多分支并行开发实战评测
git
晴天小庭4 小时前
DeepSeek Harness纯净桌面版(基于Tauri)开源,欢迎品鉴
github
苏灿烤鱼6 小时前
一套进程代替八件套,桌面更稳还是单点更大
linux·github·shell
抓不住时间的沙6 小时前
butterfly主题美化,打造属于自己的个性博客
java·开发语言·前端·javascript·node.js·github
wangruofeng6 小时前
GitHub 趋势洞察 2026-08-10~16:dsh 加冕周,11.3 万星之下生态完成分层
github·aigc·ai编程
知兀2156 小时前
hugo + PaperMod搭建博客
github