错误:稀疏结账不会在工作目录上留下任何条目

时间:2015-03-04 10:54:57

标签: macos git sparse-checkout

首先,让我告诉你,我已经检查了所有类似的主题,并搜索谷歌找到问题所在,但没有成功。我的问题是我试图在git中使用稀疏结账,但是我收到了这个错误:

error: Sparse checkout leaves no entry on working directory

我有这个60GB的存储库,我需要克隆它。我只需要它的一部分,所以为了节省磁盘空间,我想使用稀疏结账。这就是我的工作:

  1. mkdir repoDir
  2. git init repoDir
  3. cd repoDir
  4. git remote add origin <repo url>
  5. git config core.sparsecheckout true
  6. echo "some/dir/" >> .git/info/sparse-checkout
  7. git pull --depth=1 origin master
  8. 注意我添加没有-f标志的遥控器,因此不会提取任何内容。

    结果:

    error: Sparse checkout leaves no entry on working directory
    

    我尝试了几件事:

    • 我没有初始化新的仓库并手动添加远程,而是git clone --no-checkout,然后设置稀疏结账。这并没有帮助,因为我的git status显示我删除了我的仓库中的所有文件。 git pull origin master命令会导致相同的错误。
    • 在步骤6中尝试了所有可能的路径组合,使用前面的斜杠,路径之后的斜杠,星号,路径与>>>之间的空格。顺便说一下,我对这里的正确格式感到困惑,从评论中我看到了相互排斥的格式化方式。
    • 尝试确保我的.git/info/sparse-checkout是ASCII,并且找到了here找到的正确行尾。这可能只是在Windows上有问题,但我还是检查了这个。

    我的git版本:git version 1.9.3 (Apple Git-50)

    OSX Yosemite 10.10.2(14C109)

3 个答案:

答案 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