&gt; The real problem with the accidental force push is that it&#x27;s lossy. The OLD head, to which you would hope to revert when you realize your mistake, is suddenly invisible (and garbage-collectible!).<p>I prefer how Mercurial behaves in this matter. A push can not destroy old heads, and the old (dangling) heads still show up in the log by default (you can filter them out with an option, if you don&#x27;t want to see them).<p>So if someone pushes a new head by accident, anyone can still see what is going on, and fix the situation either by a merge, or reverting back to the old head.<p>(The downside is, if everyone really knows what they are doing and never make mistakes, git&#x27;s way of deleting old heads with just a force push is easier, than needing to specifically access the repo on a server if you want to delete some heads.)