Git添加子模块时如何避免生成额外嵌套文件夹?
解决Git Submodule层级冗余问题
直接解决方案
你需要在执行git submodule add命令时,明确指定目标路径为当前的lib目录,避免Git默认用子模块仓库名创建额外子文件夹。操作步骤如下:
- 确保处于
proj仓库根目录(若已进入lib,执行cd ..返回根目录) - 执行命令:
这条命令会直接将git submodule add "gitlink for submod" libsubmod仓库的内容克隆到lib目录下,最终层级就是root→lib→submod文件。
已执行错误操作后的修正步骤
如果已经生成了冗余的lib/submod层级,可按以下步骤清理后重新添加:
- 移除错误的子模块配置与文件:
git submodule deinit -f lib/submod rm -rf lib/submod git rm --cached lib/submod - 回到
proj根目录,执行正确的添加命令:git submodule add "gitlink for submod" lib
原理说明
Git默认会将子模块克隆到与仓库同名的目录中。当你在lib目录执行git submodule add <url>时,Git会在当前目录下创建与子模块仓库名一致的文件夹(即submod)并克隆内容。通过在命令末尾指定目标路径(这里是lib),就能让Git直接将子模块内容放入指定路径,消除多余层级。
内容的提问来源于stack exchange,提问作者Christoph.Renzl
相关产品推荐
相关产品推荐

