是否有可能在不首先签出整个存储库的情况下执行稀疏签出?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (83)

我正在处理一个有大量文件的存储库,需要几个小时才能完成检出。我正在研究是否可以使用Git支持这种类型的存储库,因为它支持稀疏检出,但我可以找到的每个示例都具有以下功能:

git clone <path>
git config core.sparsecheckout true
echo <dir> > .git/info/sparse-checkout
git read-tree -m -u HEAD

这个命令序列的问题是原始的克隆也做结账。如果将-n添加到原始克隆命令,那么读取树命令会导致以下错误:

错误:稀疏结帐不会在工作目录上留下条目

如何在不检出所有文件的情况下进行稀疏结帐?

提问于
用户回答回答于

尝试这个:

mkdir myrepo
cd myrepo
git init
git config core.sparseCheckout true
git remote add -f origin git://...
echo "path/within_repo/to/desired_subdir/*" > .git/info/sparse-checkout
git checkout [branchname] # ex: master

现在你会发现你有一个“修剪”结帐,只有path / within_repo / to / desired_subdir存在的文件(以及该路径)。

请注意,在Windows命令行中,你不能引用路径,即你必须使用以下命令更改第6条命令:

echo path/within_repo/to/desired_subdir/* > .git/info/sparse-checkout

如果你不这样做,你会在稀疏检出文件中得到引号,并且它不起作用

用户回答回答于

Git克隆有一个选项(--no-checkout-n)可以做你想做的。

在你的命令列表中,只需更改:

git clone <path>

为此:

git clone --no-checkout <path>

然后你可以使用问题中所述的稀疏结帐。

扫码关注云+社区