How to undo (almost) anything with Git