使用Mercurial进行分支和合并而无需推送分支

3
这是我要做的事情:
  1. hg clone http://www.my_repo.com
  2. hg branch new_branch
  3. hg update new_branch # 移动到新分支
  4. 在分支代码中进行一些更改
  5. hg commit -m '更改新分支'
  6. hg update default # 回到默认分支
  7. hg merge new_branch # 把新分支合并到默认分支中,以便把更改添加到默认分支中
  8. hg commit -m '合并'
  9. hg push
但此时,Mercurial强制我执行hg push --new-branch将分支添加到远程存储库。我不想在存储库中保留该分支,我只想在本地创建一个分支,进行所有想要进行的更改,然后当准备好合并时,移动到默认分支,在默认分支上拉取和更新更改(其他人可能已经在默认分支上添加了更改),最后将我的分支合并到默认分支中,并尽可能使新分支消失,因为一旦合并到默认分支中,我将不再需要它。

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


在Mercurial分支中是持久的。因此,您需要将提交压缩为一个,然后将其cherry-pick到“default”中。 - zerkms
1个回答

6
你所需要的是“书签”,而不是“分支”。在Mercurial中,分支称为“命名分支”,每个变更集只属于一个命名分支。该分支名称是提交的一部分,包含在提交的哈希中。当您已经创建了一个具有特定分支名称的提交时,如果没有该分支名称,您就无法推送它们(或其后代)。
另一方面,书签只是对提交的指针,它随着提交向前移动,换句话说,非常类似于git所称的分支(咳咳,将20年的术语抛出窗外:)。
将上述命令中的“分支”替换为“书签”,一切都会工作得和你想象的差不多。

它甚至可以是匿名分支,无需书签(用于单个任务)。 - Lazy Badger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接