Preventing accidental discarding of git commits

The other day, a colleague of mine accidentally force-pushed his commits onto our remote git repository, accidentally discarding my one day's work of code commits. To his defence, he was pretty new to git and Git for Windows made it so easy to do things like this. <p /> That incident made me realize that I needed to enforce a stricter git workflow to ensure things like this doesn't happen again. After talking to the guys over at #git (irc.freenode.net), most recommentation was to activate the update git-hook which was supposed to check if the code was force-pushed before accepting it into the repository. I've since added that hook but I'm curious, how are you guys managing your git repository and enforcing your workflows?