我有错误:
“error: Sparse checkout leaves no entry on the working directory”
当试图在Windows上的git中设置稀疏结账时。在研究了这个问题并找到了完整的答案后,我已经回答了我自己的问题。
从您希望源存在的文件夹中,使用git-bash提示符NOT 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上设置它时遇到了很多“错误:稀疏检查在工作目录中没有任何条目”。经过一些研究,我发现以下步骤很少,并且对我来说一直都有很好的结果 - YMMV。
最重要的一点是 - 不要使用POWERSHELL / CMD这些步骤 - 使用git bash提示符。这是因为否则echo命令会生成带有BOM标记的UNICODE文件。该文件必须是ANSI格式的文件,带有UNIX样式行结尾,以便git正确解析它。这是“错误:稀疏结帐在工作目录上没有任何条目”错误的最可能原因。
git clone –n <your repository> src
<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
git checkout <branch-name>
我最近发现powershell中的echo是写输出的同义词。通过将回显管道传递给out-file
命令可以获得ASCII输出,该命令允许您指定编码。所以这将从Powershell开始,并提供正确的文件内容:
echo some/sub/folder/you/want | out-file -encoding ascii .git/info/sparse-checkout
标记的答案是正确的,但您不需要在Windows上使用“git bash”。在PowerShell中很容易做到这一点:
Set-Content .git\info\sparse-checkout "some/sub-folder/you/want/*" -Encoding Ascii
这将创建一个ANSI编码(obivously)的文件,但使用CR LF(Windows)行结尾。这对于git来说似乎没有问题,它工作得很好,并且是一个稀疏的结账。
在Windows Server 2012上测试过。