What if one branch has two heads? I came to this situation weeks ago for some reason I didn't merged them back then and just continued developing on one head. Now I want to get rid of the other head. What should I do? Should I just merge them after so many changesets?
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:
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.)