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

Pep*_*zza 3 git version-control mercurial

这是我想要做的:

  1. 汞克隆http://www.my_repo.com
  2. hg 分支 new_branch
  3. hg update new_branch # 移动到新分支
  4. 对分支代码做一些更改
  5. hg commit -m '分支新分支的变化'
  6. hg update default # 移回默认分支
  7. hg merge new_branch # 将 new_branch 合并到默认值中以在默认值中添加更改
  8. hg commit -m '合并'
  9. 汞推

但此时,mercurial 迫使我hg push --new-branch将分支添加到远程存储库。我不想要 repo 中的分支,我只想在本地创建一个分支,做我想做的所有更改,然后当我准备好合并时,移动到默认值,拉取并更新默认更改(任何其他人可能在默认情况下添加了更改)并最终将我的分支合并到默认值中,并使 new_branch 消失成为可能,因为一旦它合并到默认值中我就不再需要它了。

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

Ry4*_*ase 6

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

另一方面,书签只是指向提交的指针。它在提交时继续前进——换句话说,非常像 git 所谓的分支(咳咳,把 20 年的术语抛到了窗外:)。

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