这是我在git中运行的命令,用于从repo到稀疏签出文件夹:
git clone --verbose --filter=blob:none --no-checkout --depth 1 --sparse "https://user:password@github.com/organization/repo-name.git"
cd ./repo-name
git config core.sparseCheckout true
git sparse-checkout init
git sparse-checkout add /MainFolder !/MainFolder/Subfolder
git sparse-checkout add /AnotherFolder
...
git checkout --progress --force
...在我的机器(tm)上,所有东西都工作得很好,但突然之间,它就停止在另一台Windows机器上工作了(在Powershell或CMD中),并出现了错误:
fatal: specify directories rather than patterns. If your directory starts with a '!', pass --skip-checks我想它在某种程度上是一致的:git sparse-checkout add /MainFolder !/MainFolder/Subfolder,但是什么?
经过大量的尝试/捕获之后,我发现这个命令工作正常:
git sparse-checkout add MainFolder但是这个命令(在文件夹名之前用斜杠)
git sparse-checkout add /MainFolder结果出现错误:fatal: specify directories rather than patterns (no leading slash).
我需要在第二台机器上设置/配置什么,以便它继续在我的机器上工作(包括!/folder排除模式)?
P.S.使用git版本的两台机器:git version 2.37.1.windows.1
@torek给出了正确的答案,但我想补充一句:
人们对使用何种稀疏签出模式存在误解。上面所写的是一种pattern样式,因此为了使其工作,我必须禁用cone样式,如下所示:
git config core.sparseCheckout true
git config --worktree 'core.sparsecheckoutcone' false然后
git sparse-checkout init或者使用“`set”命令代替所有配置命令,如下所示:
git sparse-checkout set --no-cone无论如何,我必须禁用cone模式,所以上面的git命令可以工作(包括排除文件夹的特殊符号:!和其他人员)谢谢@torek。
发布于 2022-09-22 10:02:42
您正在使用新的锥形模式的稀疏结账功能。
稀疏校验现在有两种模式:模式模式和锥模式。模式模式是旧模式,也是您正在使用的模式。锥模式是新的默认模式。它要快得多(或者说应该更快),模式模式现在被废弃了。然而,锥模式更受限制:在锥模式中有些稀疏的签出设置实际上是不可能的。
如果您不依赖于模式模式,您可以简单地省略前面的斜杠。
有关此问题的更多信息,请参见the git sparse-checkout documentation。
https://stackoverflow.com/questions/73803120
复制相似问题