4

首先,我告诉您,我已经检查了所有类似的线程并搜索了谷歌以查找可能是什么问题,但没有成功。我的问题是我试图在 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

注意我添加了没有 -f 标志的遥控器,所以没有获取任何内容。

结果:

error: Sparse checkout leaves no entry on working directory

我尝试了几件事:

  • 我没有初始化新的 repo 并手动添加遥控器,而是git clone --no-checkout设置了稀疏结帐。正如我所展示的那样,这并没有帮助,git status就好像我删除了存储库中的所有文件一样。该git pull origin master命令导致相同的错误。
  • 在第 6 步中尝试了所有可能的路径组合,包括前面的斜杠、路径后面的斜杠、星号、路径和>or之间的空格>>。顺便说一句,我很困惑这里的正确格式是什么,从对 SO 的评论中我看到了相互排斥的格式化方式。
  • 试图确保 my.git/info/sparse-checkout是 ASCII,并且有正确的行尾,如此所示。这可能只在 Windows 上存在问题,但我还是检查了这个。

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

OSX 优胜美地 10.10.2 (14C109)

4

3 回答 3

3

事实证明这"some/dir/"是错误的,因为我没有存储库,我不知道它的真实结构。我可以通过 Web 界面浏览它,但我发现这些文件夹与真实的存储库文件夹结构并不完全对应。

未来的教训:确保在创建sparse-checkout文件之前了解文件夹结构。

于 2015-03-04T11:37:01.490 回答
0

我想遵循的操作顺序是相似的,即在另一篇文章https://stackoverflow.com/a/13738951/5459638中建议的操作顺序。我收到错误消息

错误:稀疏结帐在工作目录上没有留下任何条目

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>/

带有斜杠。

作为相同目的的替代方案,在<project>/<subdir>/<subdir>下拉菜单右侧的表单中还有另一个路径,用于在网页顶部切换分支。在这种情况下,我会复制并粘贴 的子项<project>加上斜杠。而且这个路径不像 URL 那样容易复制粘贴。

于 2019-07-31T20:35:03.570 回答
0

请注意,如果您在 Windows 上使用 sparse-checkout,则可能需要根据https://github.com/git-for-windows/git/issues/2777添加 core.protectNTFS false

于 2020-09-04T14:19:44.257 回答