首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么git稀疏签出会导致致命错误?

为什么git稀疏签出会导致致命错误?
EN

Stack Overflow用户
提问于 2022-09-21 15:08:11
回答 1查看 149关注 0票数 1

这是我在git中运行的命令,用于从repo到稀疏签出文件夹:

代码语言:javascript
复制
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中),并出现了错误:

代码语言:javascript
复制
fatal: specify directories rather than patterns.  If your directory starts with a '!', pass --skip-checks

我想它在某种程度上是一致的:git sparse-checkout add /MainFolder !/MainFolder/Subfolder,但是什么?

经过大量的尝试/捕获之后,我发现这个命令工作正常:

代码语言:javascript
复制
git sparse-checkout add MainFolder

但是这个命令(在文件夹名之前用斜杠)

代码语言:javascript
复制
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样式,如下所示:

代码语言:javascript
复制
git config core.sparseCheckout true
git config --worktree 'core.sparsecheckoutcone' false

然后

代码语言:javascript
复制
git sparse-checkout init

或者使用“`set”命令代替所有配置命令,如下所示:

代码语言:javascript
复制
git sparse-checkout set --no-cone

无论如何,我必须禁用cone模式,所以上面的git命令可以工作(包括排除文件夹的特殊符号:!和其他人员)谢谢@torek。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-22 10:02:42

您正在使用新的锥形模式的稀疏结账功能。

稀疏校验现在有两种模式:模式模式和锥模式。模式模式是旧模式,也是您正在使用的模式。锥模式是新的默认模式。它要快得多(或者说应该更快),模式模式现在被废弃了。然而,锥模式更受限制:在锥模式中有些稀疏的签出设置实际上是不可能的。

如果您不依赖于模式模式,您可以简单地省略前面的斜杠。

有关此问题的更多信息,请参见the git sparse-checkout documentation

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73803120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档