Dealing with spam¶
In the case that some spam or inappropriate comment makes its way
through you interface, you can (sometimes) remove the offending commit
XYZ
.
If the offending commit is the last commit¶
bzr | bzr uncommit && bzr revert |
darcs | darcs obliterate –last=1 |
git | git reset –hard HEAD^ |
hg | hg rollback && hg revert |
If the offending commit is not the last commit¶
bzr [1] | bzr rebase -r <XYZ+1>..-1 –onto before:XYZ . |
darcs | darcs obliterate –matches ‘name XYZ’ |
git | git rebase –onto XYZ~1 XYZ |
hg [2] |
[1] | Requires the `bzr-rebase plugin`_. Note, you have to
increment XYZ by hand for <XYZ+1> , because bzr does not
support after:XYZ . |
[2] | From Mercurial, The Definitive Guide: “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” |
Warnings about changing history¶
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.