问题
First, let me tell you that I have already checked all the similar threads and searched google to find what the problem may be, but no success. My problem is that I'm trying to use sparse checkout in git, but I get this error:
error: Sparse checkout leaves no entry on working directory
I have this 60GB repository, which I need to clone. I need only a part of it, so to save a disk space I wanted to use sparse checkout. This is what I do:
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
Note I add the remote without -f flag, so nothing is fetched.
The result:
error: Sparse checkout leaves no entry on working directory
I tried several things:
- Instead of initialising new repo and adding the remote manually, I did
git clone --no-checkout
and then set up the sparse checkout. This didn't help as mygit status
showed as if I deleted all the files in my repo. Thegit pull origin master
command results in the same error. - Tried all possible combination of paths in step 6, with preceding slashes, slashes after the path, stars, spaces between path and
>
or>>
. Btw I'm confused what is the correct format here, from the comments on SO I see mutually exclusive ways of formatting this. - Tried to make sure my
.git/info/sparse-checkout
is ASCII, and has proper line endings as found here. This is probably only problematic on Windows, but I just checked this anyway.
My git version: git version 1.9.3 (Apple Git-50)
OSX Yosemite 10.10.2 (14C109)
回答1:
It turns out that "some/dir/"
was wrong, since I didn't have the repository I didn't know it's real structure. I was able to browse it through web interface but I just discovered the folders don't correspond exactly to the real repository folder structure.
Lesson for the future: make sure you know the folder structure before creating sparse-checkout
file.
回答2:
The sequence of operations I wanted to follow is similar, namely the one suggested in this other post https://stackoverflow.com/a/13738951/5459638. I get the error message
error: Sparse checkout leaves no entry on working directory
when launching git pull <remote> <branch>
with branch being master
.
As @lawicko said, in the project webpage I can click my way to the subdirectory to be cloned and copy the URL of that page; ctrl+L ctrl+C makes doing this nice and quick. This URL has the form
https://gitlab.com/<username>/<project>/tree/master/<subdir>/<subdir>
The part that my sparse-checkout
file accepts is the children of master
<subdir>/<subdir>/
with the trailing slash.
As an alternative to the same aim, there is another path in the form <project>/<subdir>/<subdir>
to the right of the drop-down menu for switching branches at the top of the webpage.
In this case, I would have copied and pasted the children of <project>
plus the trailing slash.
And this path is not as easy to copy and paste as the URL is.
来源:https://stackoverflow.com/questions/28852637/error-sparse-checkout-leaves-no-entry-on-working-directory