Jam*_*rld 26 windows git powershell github-for-windows
我有错误:
“error: Sparse checkout leaves no entry on the working directory”
Run Code Online (Sandbox Code Playgroud)
当试图在Windows上的git中设置稀疏结账时.在研究了这个问题并找到了完整的答案后,我已经回答了我自己的问题.
Jam*_*rld 59
从您希望源存在的文件夹中,使用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>
Run Code Online (Sandbox Code Playgroud)
稀疏检出使您可以处理存储库的子集.在大型存储库上设置稀疏检出是值得的,一切都快得多!
我在Windows上设置它时遇到了很多"错误:稀疏检查在工作目录中没有任何条目".经过一些研究,我发现以下步骤很少,并且对我来说一直都有很好的结果 - YMMV.
最重要的一点是 - 不要使用POWERSHELL/CMD这些步骤 - 使用git bash提示符.这是因为否则echo命令会生成带有BOM标记的UNICODE文件.该文件必须是ANSI格式的文件,带有UNIX样式行结尾,以便git正确解析它.这是"错误:稀疏结帐在工作目录上没有任何条目"错误的最可能原因.
从您希望成为根文件夹的目录的父目录,假设文件夹名称为"src"执行以下操作,这将抓取整个仓库(仍然需要),但重要的是不执行签出,并正确设置起源远程和分支跟踪.
git clone –n <your repository> src
Run Code Online (Sandbox Code Playgroud)你应该有一个相当空的src文件夹(它将有.git隐藏文件夹).现在运行以下命令.这将更新本地git配置以打开稀疏检出,并在.git/info隐藏文件夹中创建一个文件,该文件将列出在执行稀疏检出时要包括的所有文件夹.这可以在以后编辑以添加其他文件夹.重要提示:请务必使用下面的git bash提示符,并使用支持unix行结束约定的编辑器,并在编辑稀疏检出文件时另存为ANSI,否则可能会出现"错误:稀疏结帐不会在工作目录"错误.在<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
Run Code Online (Sandbox Code Playgroud)现在您已准备好结账了.这应该只留下填充的稀疏结帐文件夹.如果没有,请仔细检查上面所有内容的拼写!
git checkout <branch-name>
Run Code Online (Sandbox Code Playgroud)我最近发现powershell中的echo是写输出的同义词.通过将echo传递给out-file允许您指定编码的命令,可以获得ASCII输出.所以这将从Powershell开始,并提供正确的文件内容:
echo some/sub/folder/you/want | out-file -encoding ascii .git/info/sparse-checkout
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13114 次 |
| 最近记录: |