如何在不实际克隆其包含的所有文件的情况下向项目中添加本地子模块?我想避免在本地复制我的项目文件。
我知道可以实现这种事情,因为当您克隆包含子模块的项目时,默认情况下不会克隆这些项目。你必须手动完成:
git clone url-of-repo-containing-submodules.git
git submodule init sub-mod
git submodule update --remote
比方说,我有一个带有外源repo lib-sobmodule的git repo元项目。
我可以破解它以避免文件重复:
cd /path/to/metaproject
git submodule add ../path/to/lib-sobmodule
git commit -m "lib-sobmodule added..."
git push
cd .. && rm -rf meta-project
git clone url-of-meta-project.git
Tadam! lib-sobmodule的文件在我的桌面上不重复。但它不是一个很好的解决方案,因为它导出然后导入/从git遥控器...
是否有一个选项或方法可以阻止克隆本地项目而不必复制它包含的所有文件?
Disclamer:这几乎是Is there a way to git submodule add
a repo without cloning it?的克隆问题。但由于答案集中在30K git子模块的要求,他们没有给出我在这里描述的更常见用例的满意解决方案。
它们不是干净的解决方案,因为它的目的是克隆主项目中的模块。在没有获取相关源代码的情况下添加没有远程的子模块是没有意义的。也许一个cat .git
进入metaproject / submoduledir会让你相信这个机制。
但是我了解你的目的,我找到了两种方法来“解决”这个问题:
git deinit
命令。只要你不再启动子模块,它就会让Git闭嘴