So you have this:
o--o--o--A--B <- older unnecessary head
\
1--2--3--4--5--6 <- newer ‘good’ head
…and you don’t need A
and B
, absolutely, 100% sure. If you aren’t sure, and there are possibly salvageable things in A
and B
, better merge the heads to combine the changes. As Aaron said, Mercurial is good at it.
Now you have two options:
- get rid of the old head, or
- do a dummy merge of two heads that ignores head
B
.
If changesets A
and B
are present in other repositories you don’t control, e.g. if other people pulled A
and B
into their repositories, or you pushed A
and B
to a public repository (say, Bitbucket), then you’ve released A
and B
into the wild, and can’t get rid of them. You should do a dummy merge:
$ hg up 6
$ hg --config ui.merge=internal:local merge
This will ignore any changes from A
and B
when merging.
If, on the other hand, A
and B
are private, you can either strip them:
$ hg strip A
(Rev A
and descendants stripped; enable the MQ extension to make strip
available.)
Or, make a new clone of your repository without changesets A
and B
:
$ hg clone myrepo myrepo2-clone -r 6
(Only rev 6
and ancestors added to the clone.)