我找了一会儿却找不到答案(也许我不知道该看什么).
我们有一个主库,它是一个自己的存储库(让我们称它为Lib)它包含我们的大多数模块和子模块.我们还说它的大小为2GB ......
现在我们有很多项目,例如:ProjA,ProjB,ProjC,每个项目都使用Lib作为子模块.
ProjA
- Lib(分支:master,commit#:1)
ProjB
- Lib(分支:其他,提交#:2)
ProjA
- Lib(分支:master,commit#:4)
因此,虽然我能够保持每个项目引用正确的库(aka子模块)版本.我现在有3*2GB = 6GB的THE SAME子模块.
有没有办法在保持引用的正确文件/版本控制的同时引用单个子模块?
例如.
ProjA
Lib/base_lib.h(v1.0)
LIB/file_only_in_this_commit
ProjB
- Lib/base_lib.h(v1.0)
ProjC
- Lib/base_lib.h(v1.1)
谢谢!
如何在不实际克隆其包含的所有文件的情况下向项目中添加本地子模块?我想避免在本地复制我的项目文件.
我知道可以实现这种事情,因为当您克隆包含子模块的项目时,默认情况下不会克隆这些项目.你必须手动完成:
git clone url-of-repo-containing-submodules.git
git submodule init sub-mod
git submodule update --remote
Run Code Online (Sandbox Code Playgroud)
比方说,我有一个带有外源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
Run Code Online (Sandbox Code Playgroud)
Tadam!lib-sobmodule的文件在我的桌面上不重复.但它不是一个很好的解决方案,因为它导出然后导入/从git遥控器...
是否有一个选项或方法可以阻止克隆本地项目而不必复制它包含的所有文件?
免责声明:这几乎是一个克隆问题,是否有办法在git submodule add没有克隆它的情况下回购?.但由于答案集中在30K git子模块的要求,他们没有给出我在这里描述的更常见用例的满意解决方案.