Git仓库中多份.gitmodules文件的处理方式咨询
处理Git嵌套子模块的正确姿势
别担心,你这个情况其实是Git完全支持的场景——嵌套子模块,并不是只有根目录的.gitmodules才会生效。Git会识别每个子模块目录下的.gitmodules文件,分别处理各自的子模块配置,两者互不干扰。下面给你一步步讲怎么操作:
1. 克隆仓库时一次性拉取所有嵌套子模块
如果是刚克隆主仓库,直接加上--recurse-submodules参数,Git会自动拉取你的主仓库子模块,以及子模块里的嵌套子模块:
git clone --recurse-submodules <你的主仓库URL>
2. 已克隆仓库后补拉嵌套子模块
如果已经克隆了主仓库,但还没拉取第三方库的嵌套子模块,按以下步骤操作:
- 先进入第三方库的子模块目录:
cd /Workspace/Common/Lib/External - 执行递归初始化更新命令,Git会读取这个目录下的
.gitmodules,拉取它的子模块:git submodule update --init --recursive
3. 后续更新嵌套子模块
之后如果要更新所有子模块(包括嵌套的),可以在主仓库根目录执行:
git submodule update --remote --recursive
这个命令会先更新你主仓库的第三方库子模块到最新远程分支,再递归更新第三方库自己的子模块。
关键注意事项
- 主仓库的
.gitmodules只负责管理你自己添加的那个第三方库子模块,第三方库目录下的.gitmodules是它自己的配置,你不需要修改主仓库的.gitmodules来适配嵌套子模块。 - 主仓库只会记录第三方库的commit哈希值,而第三方库的子模块状态是存在它自己的仓库提交里的,你只要保证第三方库目录处于正确的commit,嵌套子模块的状态就会被正确保留。
内容的提问来源于stack exchange,提问作者Maik
相关产品推荐
相关产品推荐

