error: Sparse checkout leaves no entry on working directory
error: Sparse checkout leaves no entry on working directory
首先告诉你,我已经检查了所有类似的线程并搜索了google 以找出问题所在,但没有成功。我的问题是我试图在 git 中使用稀疏结帐,但出现此错误:
error: Sparse checkout leaves no entry on working directory
我有这个 60GB 的存储库,我需要克隆它。我只需要它的一部分,所以为了节省磁盘 space 我想使用稀疏结帐。这就是我所做的:
mkdir repoDir
git init repoDir
cd repoDir
git remote add origin <repo url>
git config core.sparsecheckout true
echo "some/dir/" >> .git/info/sparse-checkout
git pull --depth=1 origin master
请注意,我添加的遥控器没有 -f 标志,因此不会获取任何内容。
结果:
error: Sparse checkout leaves no entry on working directory
我尝试了几种方法:
- 我没有初始化新的 repo 并手动添加远程,而是
git clone --no-checkout
然后设置了稀疏结帐。这没有帮助,因为我的 git status
显示我删除了存储库中的所有文件。 git pull origin master
命令导致相同的错误。
- 在第 6 步中尝试了所有可能的路径组合,前斜线、路径后斜线、星号、路径与
>
或 >>
之间的 spaces。顺便说一句,我很困惑这里的正确格式是什么,从关于 SO 的评论中我看到了相互排斥的格式化方式。
- 试图确保我的
.git/info/sparse-checkout
是 ASCII,并且有正确的行结尾 here。这可能只在 Windows 上有问题,但我还是检查了一下。
我的git版本:git version 1.9.3 (Apple Git-50)
OSX Yosemite 10.10.2 (14C109)
事实证明 "some/dir/"
是错误的,因为我没有存储库,所以我不知道它是真实的结构。我能够通过 Web 界面浏览它,但我发现文件夹与真正的存储库文件夹结构不完全对应。
未来的教训:确保在创建 sparse-checkout
文件之前了解文件夹结构。
我想要遵循的操作顺序是相似的,即另一个 post 中建议的操作顺序。我收到错误消息
error: Sparse checkout leaves no entry on working directory
启动 git pull <remote> <branch>
时分支为 master
。
正如@lawicko所说,在项目网页中,我可以点击我的方式进入要克隆的子目录并复制该页面的URL; ctrl+L ctrl+C 使这件事变得又好又快。这个 URL 的形式是
https://gitlab.com/<username>/<project>/tree/master/<subdir>/<subdir>
我的sparse-checkout
文件接受的部分是master
的children
<subdir>/<subdir>/
尾部斜杠。
作为相同目的的替代方案,在网页顶部的 drop-down 菜单右侧有另一个路径 <project>/<subdir>/<subdir>
用于切换分支。
在这种情况下,我会复制并粘贴 <project>
的 children 加上结尾的斜杠。
而且这个路径不像 URL 那样容易复制和粘贴。
请注意,如果您在 windows 上使用 sparse-checkout,您可能需要根据 https://github.com/git-for-windows/git/issues/2777
添加 core.protectNTFS false
首先告诉你,我已经检查了所有类似的线程并搜索了google 以找出问题所在,但没有成功。我的问题是我试图在 git 中使用稀疏结帐,但出现此错误:
error: Sparse checkout leaves no entry on working directory
我有这个 60GB 的存储库,我需要克隆它。我只需要它的一部分,所以为了节省磁盘 space 我想使用稀疏结帐。这就是我所做的:
mkdir repoDir
git init repoDir
cd repoDir
git remote add origin <repo url>
git config core.sparsecheckout true
echo "some/dir/" >> .git/info/sparse-checkout
git pull --depth=1 origin master
请注意,我添加的遥控器没有 -f 标志,因此不会获取任何内容。
结果:
error: Sparse checkout leaves no entry on working directory
我尝试了几种方法:
- 我没有初始化新的 repo 并手动添加远程,而是
git clone --no-checkout
然后设置了稀疏结帐。这没有帮助,因为我的git status
显示我删除了存储库中的所有文件。git pull origin master
命令导致相同的错误。 - 在第 6 步中尝试了所有可能的路径组合,前斜线、路径后斜线、星号、路径与
>
或>>
之间的 spaces。顺便说一句,我很困惑这里的正确格式是什么,从关于 SO 的评论中我看到了相互排斥的格式化方式。 - 试图确保我的
.git/info/sparse-checkout
是 ASCII,并且有正确的行结尾 here。这可能只在 Windows 上有问题,但我还是检查了一下。
我的git版本:git version 1.9.3 (Apple Git-50)
OSX Yosemite 10.10.2 (14C109)
事实证明 "some/dir/"
是错误的,因为我没有存储库,所以我不知道它是真实的结构。我能够通过 Web 界面浏览它,但我发现文件夹与真正的存储库文件夹结构不完全对应。
未来的教训:确保在创建 sparse-checkout
文件之前了解文件夹结构。
我想要遵循的操作顺序是相似的,即另一个 post 中建议的操作顺序。我收到错误消息
error: Sparse checkout leaves no entry on working directory
启动 git pull <remote> <branch>
时分支为 master
。
正如@lawicko所说,在项目网页中,我可以点击我的方式进入要克隆的子目录并复制该页面的URL; ctrl+L ctrl+C 使这件事变得又好又快。这个 URL 的形式是
https://gitlab.com/<username>/<project>/tree/master/<subdir>/<subdir>
我的sparse-checkout
文件接受的部分是master
<subdir>/<subdir>/
尾部斜杠。
作为相同目的的替代方案,在网页顶部的 drop-down 菜单右侧有另一个路径 <project>/<subdir>/<subdir>
用于切换分支。
在这种情况下,我会复制并粘贴 <project>
的 children 加上结尾的斜杠。
而且这个路径不像 URL 那样容易复制和粘贴。
请注意,如果您在 windows 上使用 sparse-checkout,您可能需要根据 https://github.com/git-for-windows/git/issues/2777
添加 core.protectNTFS false