Note for git submodule users - the solutions here will not work for you as-is.
Let's say you have a parent repository called dev, for example, and your submodule repository is called api.
if you are inside of api and you get the error mentioned in this question:
error: bad index file sha1 signature
fatal: index file corrupt
The index file will NOT be inside of a .git folder.  In fact, the .git won't even be a folder - it will will be a text document with the location of the real .git data for this repository. Likely something like this:
~/dev/api $ cat .git
gitdir: ../.git/modules/api
So, instead of rm -f .git/index, you will need to do this:
rm -f ../.git/modules/api/index
git reset
or, more generally,
rm -f ../.git/modules/INSERT_YOUR_REPO_NAME_HERE/index
git reset