如何添加Git子模块但不递归引入其内部子模块?
阻止子模块递归引入的方法
当然有办法实现这个需求,以下是几种可行的方案:
添加子模块时直接禁用递归
在添加bar作为子模块的时候,使用--no-recurse-submodules参数:git submodule add --no-recurse-submodules .../bar.git这个命令会自动在仓库的
.gitmodules文件中为bar子模块添加ignore = all配置,后续即使执行git submodule update --init --recursive,也会忽略bar内部的something子模块。修改现有子模块的配置
如果已经添加了bar子模块,可以手动修改.gitmodules文件,找到bar对应的配置段,添加ignore = all:[submodule "bar"] path = bar url = .../bar.git ignore = all保存后执行
git submodule sync同步配置,之后再运行git submodule update --init --recursive就不会拉取bar里的嵌套子模块了。临时跳过单个子模块的递归
如果你只是想单次执行时跳过bar的子模块,可以先单独初始化bar(不递归),再递归处理其他子模块:git submodule update --init bar git submodule update --init --recursive --exclude=bar不过这种方法更适合临时需求,长期禁用还是前两种方法更稳妥。
内容的提问来源于stack exchange,提问作者Timmmm
相关产品推荐
相关产品推荐

