本地合并多个仓库,保留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 腾讯元宝网页版本;
相关推荐
修己xj3 小时前
解决Github QQ邮箱注册难题:绕过“Unable to verify your captcha response”错误
github
cos3 小时前
Fork 主题如何更新?基于 Ink 构建主题更新 CLI 工具
前端·javascript·git
OpenMiniServer4 小时前
当 AI 成为 Git 里的一个“人”
人工智能·git
AI首席情报员_阿布6 小时前
2026 GitHub 最火的 10 个 AI Agent 框架:普通开发者的选型指南
github
Carry3456 小时前
不清楚的 .gitignore
前端·git
阿里嘎多学长11 小时前
2026-01-11 GitHub 热点项目精选
开发语言·程序员·github·代码托管
三两肉11 小时前
HTTPS ECDHE 握手全解析
网络协议·https·github·rsa·echde
啊湘11 小时前
vscode 使用 github (适用CURSOR等使用)
ide·vscode·github·cursor·mcp
l1t12 小时前
利用DeepSeek辅助拉取GitHub存储库目录跳过特定文件方法
人工智能·github·deepseek
Hilaku12 小时前
我用 Gemini 3 Pro 手搓了一个并发邮件群发神器(附源码)
前端·javascript·github