本地合并多个仓库
当我用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
。
• 测试:验证合并后的仓库,确保一切正常工作。
这种方法完全在本地操作,不需要远程服务器。
参考文献
以下网页、视频、工具,在不同程度帮助我学习了本文章的内容,在此对提供帮助的技术前辈表示感谢~
- AIGC声明: DeepSeek-V3 腾讯元宝网页版本;
