Git子模块准备进行稀疏检出

时间:2018-10-12 13:33:26

标签: git git-submodules

我有一个用于稀疏签出的子模块。没有稀疏的结帐我会

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中创建存储库。

1 个答案:

答案 0 :(得分:3)

您可以尝试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>