In the case that some spam or inappropriate comment makes its way through you interface, you can (sometimes) remove the offending commit XYZ.
|bzr||bzr uncommit && bzr revert|
|darcs||darcs obliterate –last=1|
|git||git reset –hard HEAD^|
|hg||hg rollback && hg revert|
|mtn||mtn db kill_rev_locally $(mtn automate get_base_revision_id)|
|bzr ||bzr rebase -r <XYZ+1>..-1 –onto before:XYZ .|
|darcs||darcs obliterate –matches ‘name XYZ’|
|git||git rebase –onto XYZ~1 XYZ|
|||Requires the `bzr-rebase plugin`_. Note, you have to increment XYZ by hand for <XYZ+1>, because bzr does not support after:XYZ.|
“Mercurial also does not provide a way to make a file or changeset completely disappear from history, because there is no way to enforce its disappearance”
|||See Rebuilding ancestry in the Monotone documentation.|
Note that all of these change the repo history , so only do this on your interface-specific repo before it interacts with any other repo. Otherwise, you’ll have to survive by cherry-picking only the good commits.