aboutsummaryrefslogtreecommitdiffstats
path: root/doc/spam.txt
blob: 4d745807be3b14c2440649c7f60ec813058bf156 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Removing spam commits from the history
======================================

arch bzr darcs git hg none

In the case that some spam or inappropriate comment makes its way
through you interface, you can remove the offending commit XYZ with:

  If the offending commit is the last commit:

    arch:  
    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:

    arch:  
    bzr:   bzr rebase -r <XYZ+1>..-1 --onto before:XYZ .
      (requires bzr-rebase plugin, note, you have to increment XYZ by
      hand for <XYZ+1>, because bzr does not support "after:XYZ".)
    darcs: darcs obliterate --matches 'name XYZ'
    git:   git rebase --onto XYZ~1 XYZ
    hg:     -not-supported-
      (From http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html#id394667
      "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")

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.