繁体   English   中英

在 Windows git 上:“错误:稀疏结帐未在工作目录上留下任何条目”

[英]On Windows git: “error: Sparse checkout leaves no entry on the working directory”

我有错误:

“error: Sparse checkout leaves no entry on the working directory”

尝试在 Windows 上的 git 中设置稀疏结帐时。 在研究了这个问题并在网络上找到了完整的答案后,我已经回答了我自己的问题。

tl;博士

从您希望源代码所在的文件夹中,使用 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 文件。 该文件必须是带有 UNIX 样式行结尾的 ANSI 格式文件,以便 git 正确解析它。 这是“错误:稀疏结帐在工作目录上没有留下任何条目”错误的最可能原因。

  1. 从您希望成为根文件夹的目录的父文件夹中,假设文件夹名称为“src”,执行以下操作,这将获取整个 repo(仍然需要),但重要的是不执行结帐,并正确设置启动远程和分支跟踪。

     git clone –n <your repository> src
  2. 您应该有一个相当空的 src 文件夹(它将包含 .git 隐藏文件夹)。 现在运行以下命令。 这将更新本地 git 配置以打开稀疏结帐,并在 .git/info 隐藏文件夹中创建一个文件,该文件将列出您在进行稀疏结帐时要包含的所有文件夹。 这可以稍后编辑以添加其他文件夹。 重要提示:在编辑 sparse-checkout 文件时,请务必使用 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
  3. 现在您可以结帐了。 这应该只留下填充的稀疏结帐文件夹。 如果没有,请仔细检查以上所有内容的拼写!

     git checkout <branch-name>

编辑 - 在 Powershell 中回显

我最近发现 powershell 中的 echo 是写输出的同义词。 可以通过将 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 编码的文件(显然),但带有 CR LF (Windows) 行尾。 不过,这对于 git 来说似乎没有问题,它运行良好并且进行了稀疏的结帐。

在 Windows Server 2012 上测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM