Why do excluded files keep reappearing in my git sparse checkout?
In my case, I was performing some unit tests on a repo using a sparse checkout. One of my test cases created commits that contained files that were not included in my sparse checkout sub-tree list.
When I attempted to git reset --hard 123456
, I received the following error:
error: Entry 'a.c' not uptodate. Cannot update sparse checkout.
fatal: Could not reset index file to revision '123456'.
The solution was to get remove the files in my working tree by re-applying the sparse-checkout rules:
git read-tree -mu HEAD
The skip-worktree bit can be modified with git update-index --skip-worktree
. When you notice the files present you can check git ls-files -v |grep ^S
(S being a file marked with skip-worktree).
But as the #git folks say, if you see odd behavior it is most likely a bug in git. After all, this is quite esoteric feature. You should probably report your findings to the git mailing list.
Edit: Also, if you are using git 1.7.7.6, I strongly recommend upgrading. 1.7.10 tree is way ahead, and I think there is a strong chance it will fix your problems.