Changeset Evolution with Mercurial
For years, Mercurial has included various commands that allow history modification: rebase, histedit, commit --amend and so forth. However, there’s a catch: until now, Mercurial’s various mechanisms for modifying history have been unsafe, in that changesets were destroyed (“stripped”) rather than simply hidden and still easy to recover. evolve makes things better by changing the behaviour of most existing history modification commands so they use a safer mechanism (changeset obsolescence, covered below) rather than the older, less safe strip operation.
If you really must fix history, a better way.