git: fatal: index file smaller than expected
NB: You should back up your working directory before trying anything in this post.
$ git status fatal: index file smaller than expected $ git reset --hard fatal: index file smaller than expected
Uh-Oh-Spaghetti-O's. Not a nice error message to get first thing in the morning.
After much googling I realized that the .git/index is only used to track staged and unstaged changes. So the simplest way out of this mess is to move the broken index out of the way.
$ mv .git/index .git/index.backup $ git status
You should now be presented with a rather confused view of the working tree, where it thinks things have been deleted and there is a whole raft of untracked files...
$ git add .
And we're back to where we should be.