本地合并多个仓库,保留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 腾讯元宝网页版本;
相关推荐
mortimer2 小时前
零依赖、高效率的语音转文字c++版 whisper.cpp (附批量处理脚本)
开源·github
sulikey6 小时前
从零配置一个规范的 Python Git 仓库(适用于 Gitee / GitHub)
git·python·pycharm·gitee·github
whysqwhw6 小时前
KuiklyUI声明式组件体系的实现分析
github
whysqwhw6 小时前
ComposeView 的上下游继承关系及相关类/接口分析
github
逛逛GitHub8 小时前
登上 GitHub 热榜!一口气调用多个 AI 大模型开源神器。
github
21号 18 小时前
4.客户端(Redis)
开发语言·数据库·github
学渣676568 小时前
【面向小白】git rebase全面总结,什么时候用rebase
git
梦想CAD控件9 小时前
网页CAD中组(Group)功能的二次开发
前端·javascript·github
米诺zuo10 小时前
不同的项目仓库配置不同的github账号
github
小龙报10 小时前
《算法每日一题(1)--- 第31场蓝桥算法挑战赛》
c语言·开发语言·c++·git·算法·学习方法