I am having a really hard time understanding why a distributed VCS with hundreds of users needs the admin to the central repo to do anything for them.
Each distributed node only knows the ref the branch was pointing at the last time they fetched, so their certainty on what the branch looked like before the force push is much lower.
git reports it to you when you do the force push:
% git push github master --force
…
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/foo/repo.git
+ 4d44b63...ad5b147 master -> master (forced update)
^ ^
previous what you've forced it to
Of course, if you lose the output, then yes, the reflog is the only thing that has it. But force pushing is so rare, and something that (should) is done with care, I'm puzzled as to how someone "accidentally" >150 repos.Ideally git itself should record this information somewhere, though.
Also I am not sure what he did to push to 150 remotes, and in that case this output would be much more tedious to piece together (and that is assuming he was able to capture all of it).
However I disagree that force pushing is rare, I find it is a (sharp) tool I use most days (more often on private repos or branches).
I do like the idea of github providing some kind of web interface to view the reflog and reset branches to various points within it.