You can't undo history like he wanted to in a distributed version control system like git. Rather, you have to revert the content/data while moving the history forward. Resets and rebasing will only work locally if the commits haven't been pushed out to remote branches. If you could just "undo" history, how would git know?<p>Had Ethan read about git-revert he might have stumbled into this link <a href="http://www.kernel.org/pub/software/scm/git/docs/v1.6.2.3/howto/revert-a-faulty-merge.txt" rel="nofollow">http://www.kernel.org/pub/software/scm/git/docs/v1.6.2.3/how...</a> that explains in more detail.<p>To Ethan's credit, Git is pretty difficult to use until you understand the model behind trees, commits, and blobs. I've been in his shoes where I blew away a bunch of work and screwed up everybody's remote branches :)