I just realized one of the reasons why I don't like git rebase. If you manage to f'up the rebase, it's not easy to back it out. Rebase should keep a tag/branch of the state BEFORE the rebase so that you can revert it. There can be false/bad merges that git can't catch, but will result in an unbuildable tree, w/o an easy way to get things back to the way they were before.