本地合并多个仓库,保留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 腾讯元宝网页版本;
相关推荐
uhakadotcom37 分钟前
BPF编程入门:使用Rust监控CPU占用
后端·面试·github
uhakadotcom1 小时前
GHSL-2024-252: Cloudflare Workers SDK 环境变量注入漏洞解析
后端·面试·github
uhakadotcom1 小时前
GHSL-2024-264_GHSL-2024-265: 了解 AWS CLI 中的正则表达式拒绝服务漏洞 (ReDoS)
后端·面试·github
uhakadotcom1 小时前
了解Chainlit:简化AI应用开发的Python库
后端·面试·github
柚几哥哥2 小时前
IntelliJ IDEA全栈Git指南:从零构建到高效协作开发
java·git·intellij-idea
小华同学ai2 小时前
1K star!这个开源项目让短信集成简单到离谱,开发效率直接翻倍!
后端·程序员·github
遇到困难睡大觉哈哈2 小时前
Git推送错误解决方案:`rejected -> master (fetch first)`
大数据·git·elasticsearch
ON.LIN2 小时前
Git提交本地项目到Github
git·github
uhakadotcom3 小时前
使用 Model Context Protocol (MCP) 构建 GitHub PR 审查服务器
后端·面试·github
九月镇灵将3 小时前
6.git项目实现变更拉取与上传
git·python·scrapy·scrapyd·gitpython·gerapy