我遇到了这个错误:
“error: Sparse checkout leaves no entry on the working directory”
在尝试在Windows上设置Git中的稀疏检出时,经过调查并发现完整答案分散在Web上后,我回答了自己的问题。
我遇到了这个错误:
“error: Sparse checkout leaves no entry on the working directory”
在尝试在Windows上设置Git中的稀疏检出时,经过调查并发现完整答案分散在Web上后,我回答了自己的问题。
从您希望源代码存在的文件夹中,使用git-bash提示符而不是powershell(尽管请参见我的下面的编辑):
git clone –n <repo> <local-directory-name>
cd <local-directory-name>
git config core.sparsecheckout true
echo some/sub-folder/you/want >> .git/info/sparse-checkout
git checkout <branch-name>
稀疏检出使您能够在存储库的子集上工作。在大型存储库上设置稀疏检出是值得的,因为一切都更快!
我曾经在 Windows 上遇到了很多问题,“error: Sparse checkout leaves no entry on the working directory”。经过一番研究,我发现以下步骤最简单,并且对我而言始终有良好的结果 - 不保证适用于所有情况。
最重要的一点是 - 不要使用 PowerShell/CMD 进行这些步骤 - 使用 git bash 提示符。否则,echo 命令会生成一个带有 BOM 标记的 UNICODE 文件。该文件必须是 ANSI 格式的文件,具有 UNIX 风格的行结尾,以便 Git 正确解析它。这很可能是“error: Sparse checkout leaves no entry on the working directory”错误的原因。
从您希望成为根文件夹的父文件夹开始,假设文件夹名称为“src”,请执行以下操作。这将获取整个仓库(仍然需要),但重要的是不执行检出,并正确设置了远程源和分支跟踪。
git clone –n <your repository> src
您的src文件夹应该看起来相对空洞(它将有.git隐藏文件夹)。现在运行以下命令。此更新本地git配置以打开稀疏检出,并创建一个文件在.git/info隐藏文件夹中,其中将列出在进行稀疏检出时要包括的所有文件夹。稍后可以编辑此文件以添加其他文件夹。重要提示:请确保使用git bash提示符,并使用支持unix行结束约定并保存为ANSI格式的编辑器编辑sparse-checkout文件,否则可能会出现“错误:Sparse checkout leaves no entry on the working directory”错误信息。 <path you want to checkout>
可能是这样的:path/to/subfolder
- 注意缺少前导和尾随路径分隔符。
cd src
git config core.sparsecheckout true
echo <path you want to checkout> >> .git/info/sparse-checkout
现在您已经准备好结账了。这应该只留下sparse-checkout文件夹中的内容。如果没有,仔细检查上面的所有拼写!
git checkout <branch-name>
最近我发现,在Powershell中,echo是write-output的同义词。可以通过将echo导管到out-file
命令来获取ASCII输出,该命令允许指定编码方式。因此,这将在Powershell中起作用并提供正确的文件内容:
echo some/sub/folder/you/want | out-file -encoding ascii .git/info/sparse-checkout
Set-Content .git\info\sparse-checkout "some/sub-folder/you/want/*" -Encoding Ascii
%GITHOME%\usr\bin\echo.exe <您想要检出的路径> >> .git/info/sparse-checkout
- LafleurOut-File -encoding
更可靠的是将其替换为Set-Content -Encoding Ascii
。输出文件版本包括调用格式化程序,这可能会给您带来意外的结果。请注意,Powershell
是新的跨平台版本。许多评论人都在使用具有大量编码边缘情况的Windows Powershell
,而新版本则没有。 https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_character_encoding?view=powershell-7 - ninMonkey