Tho*_* S. 2 git git-submodules
我有一个用于稀疏结帐的子模块。没有稀疏结帐我会做
git submodule update --init <path/to/submodule>
Run Code Online (Sandbox Code Playgroud)
但是如何将子模块存储库初始化为空而不获取它(或获取它,但不检查它),所以我可以调用
cd <path/to/submodule>
git config core.sparseCheckout true
cd <../../..>
echo <subdir-to-get> .git/modules/<path/to/submodule>/info/sparse-checkout
Run Code Online (Sandbox Code Playgroud)
很遗憾
git submodule init <path/to/submodule>
Run Code Online (Sandbox Code Playgroud)
不会在.git/modules/<path/to/submodule>和 文件中创建存储库<path/to/submodule>/.git。
您可以像这里一样尝试先将子模块克隆为普通存储库,然后使用git submodule absorbgitdirs.
通过先克隆深度为 1,您不会获得太多数据:
git clone --depth=1 --no-checkout an/Url <path/to/submodule>
git submodule add an/Url <path/to/submodule>
git submodule absorbgitdirs
Run Code Online (Sandbox Code Playgroud)
然后,您可以修改 .git/modules/<path/to/submodule>/info/sparse-checkout
git -C <path/to/submodule> config core.sparseCheckout true
echo 'foo/*' >>.git/modules/<path/to/submodule>/info/sparse-checkout
Run Code Online (Sandbox Code Playgroud)
最后,只获取你想要的文件:
git submodule update --force --checkout <path/to/submodule>
Run Code Online (Sandbox Code Playgroud)