I know it has probably existed for ages, and I've probably already read about it, but I've just rediscovered git-annex repair, which can also be run in a plain git repository and is able to retrieve any corrupted object from a remote where it is available, which is something I needed a few weeks ago.