首先,让我告诉你,我已经检查了所有类似的主题,并搜索谷歌找到问题所在,但没有成功。我的问题是我试图在git中使用稀疏结账,但是我收到了这个错误:
error: Sparse checkout leaves no entry on working directory
我有这个60GB的存储库,我需要克隆它。我只需要它的一部分,所以为了节省磁盘空间,我想使用稀疏结账。这就是我的工作:
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
我尝试了几件事:
git clone --no-checkout
,然后设置稀疏结账。这并没有帮助,因为我的git status
显示我删除了我的仓库中的所有文件。 git pull origin master
命令会导致相同的错误。>
或>>
之间的空格。顺便说一下,我对这里的正确格式感到困惑,从评论中我看到了相互排斥的格式化方式。.git/info/sparse-checkout
是ASCII,并且找到了here找到的正确行尾。这可能只是在Windows上有问题,但我还是检查了这个。我的git版本:git version 1.9.3 (Apple Git-50)
OSX Yosemite 10.10.2(14C109)
答案 0 :(得分:2)
事实证明"some/dir/"
是错误的,因为我没有存储库,我也不知道它的真实结构。我能够通过网络界面浏览它,但我发现这些文件夹并不完全对应真实的存储库文件夹结构。
未来课程:确保在创建sparse-checkout
文件之前知道文件夹结构。
答案 1 :(得分:0)
我要遵循的操作顺序是相似的,即在另一篇文章https://stackoverflow.com/a/13738951/5459638中建议的操作顺序。我收到错误消息
错误:稀疏签出不会在工作目录上留下任何条目
在启动git pull <remote> <branch>
且分支为master
时。
正如@lawicko所说,在项目页面中,我可以单击要复制的子目录的路径,然后复制该页面的URL。 ctrl + L ctrl + C使此操作变得轻松快捷。该网址的格式为
https://gitlab.com/<username>/<project>/tree/master/<subdir>/<subdir>
我的sparse-checkout
文件接受的部分是master
的孩子
<subdir>/<subdir>/
后跟斜杠。
作为相同目标的替代方法,下拉菜单右侧还有<project>/<subdir>/<subdir>
形式的另一条路径,用于在网页顶部切换分支。
在这种情况下,我将复制并粘贴<project>
的子级以及后跟的斜杠。
而且,此路径不像URL那样容易复制和粘贴。
答案 2 :(得分:0)
请注意,如果您在Windows上使用稀疏签出,则可能需要根据https://github.com/git-for-windows/git/issues/2777
添加core.protectNTFS false