Search code examples
mercurial

Mercurial moving commits in another branch


My coworker accidentally made two commits in the default branch instead of creating new his own development branch.

How can I change this situation and moves these two commits to a new branch?


Solution

  • A major question

    Have the accidental commits reached other repositories or is it just in his own? If so, you can skip to the section below 'Maybe the cat is still in the bag' otherwise you may have a fair bit of work to do.


    You are not alone

    See here for more discussion on how to correct the problem elsewhere on Stack Overflow. What is described is the 'proper' way to to it

    • export a patch
    • create the branch
    • import the patch
    • delete the earlier commits.


    Maybe the cat is still in the bag

    If the changes are only in the local copy, then a simpler solution is to

    • create the new branch
    • switch to it
    • merge the changes onto that either with your fav merge tool (go Meld) or with hg graft
    • use the hg strip command to delete the changes on the old brach
    • push the changes to the world
    • pretend like nothing ever happened, whistle a happy tune ...