如何用Git Subtree将含多子目录的子仓库合并到主仓库
可以通过Git Subtree实现需求,步骤如下:
1. 添加子仓库远程并拉取代码
先把repo2添加为本地远程仓库,拉取它的master分支:
git remote add repo2 <你的repo2仓库地址> git fetch repo2 master
2. 临时调整子仓库目录结构
创建临时分支,将repo2里base/下的内容移到根目录(这是为了适配后续合并到主仓库base/目录的操作):
git checkout -b repo2-temp repo2/master git mv base/* . git rm -r base git commit -m "调整目录结构,适配主仓库subtree合并"
3. 合并到主仓库的base目录
切回主仓库的master分支,执行subtree添加命令:
git checkout master git subtree add --prefix base repo2-temp --squash
执行完成后,主仓库的base/目录会同时包含原有folder1、folder2,以及来自repo2的folder3、folder4,完全符合需求结构。
后续同步子仓库变更的方法
如果repo2有更新,按以下步骤同步:
- 更新临时分支并调整目录:
git fetch repo2 master git checkout repo2-temp git merge repo2/master git mv base/* . git rm -r base git commit -m "同步repo2最新变更并调整目录"
- 同步到主仓库:
git checkout master git subtree pull --prefix base repo2-temp --squash
内容的提问来源于stack exchange,提问作者Veljko
相关产品推荐
相关产品推荐

