Mercurial分支和合并,无需推动分支

时间:2014-07-09 21:31:06

标签: git version-control mercurial

这是我正在尝试做的事情:

  1. hg clone http://www.my_repo.com
  2. hg branch new_branch
  3. hg update new_branch #move to new branch
  4. 在分支代码中进行一些更改
  5. hg commit -m'更改分支new_branch'
  6. hg update default #move to default branch
  7. hg merge new_branch #merge new_branch默认为默认添加更改
  8. hg commit -m'merging'
  9. hg push
  10. 但是在这一点上,mercurial强迫我做hg push --new-branch将分支添加到远程存储库。我不想在repo中使用分支,我只想在本地创建一个分支,做我想做的所有更改,然后当我准备合并时,移动到默认值,拉出并更新默认更改(任何其他person可能在默认情况下添加了更改)并最终将我的分支合并为默认值,并使new_branch消失,因为一旦合并为默认值,我将不再需要它。

    我做错了什么,如果你没有注意到,我来自git。

1 个答案:

答案 0 :(得分:4)

对于你正在做的事情,你想要一个'书签'而不是'分支'。在Mercurial中,一个分支称为“命名分支”,每个变更集都在一个且只有一个命名分支上。该分支名称是提交的一部分,并包含在提交的哈希中。当您创建了具有特定分支名称的提交时,如果没有该分支名称,则无法推送它们(或其后代)。

另一方面,书签只是提交的指针。它在提交时前进 - 换句话说就像git称之为分支( cough 在窗口中抛出20年的术语)。

在上面的命令中替换分支的书签,一切都会像你想象的那样完成。