我有一个子模块用于稀疏签出。如果不结帐的话
git submodule update --init <path/to/submodule>
但是,如何在不获取子模块存储库(或获取子模块存储库,但不签出)的情况下将其初始化为空,以便可以调用
cd <path/to/submodule>
git config core.sparseCheckout true
cd <../../..>
echo <subdir-to-get> .git/modules/<path/to/submodule>/info/sparse-checkout
不幸的是
git submodule init <path/to/submodule>
不会在
.git/modules/<path/to/submodule>
和文件<path/to/submodule>/.git
中创建存储库。 最佳答案
您可以尝试,as in here先将子模块克隆为普通存储库,然后使用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
然后,您可以修改
.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
最后,只获取所需的文件:
git submodule update --force --checkout <path/to/submodule>