我最近开始使用 Mercurial 跟踪我的项目的更改。在开始研究某个功能之前,我做了几次修改。现在,我想在实现该功能之前返回到我的修订版,并尝试以一种非常不同的方式实现它。但是,我想保留我在第一个实现时所做的一些更改,因为无论我选择哪种实现,它们都同样适用。

在我开始实现该功能之前更新回修订版的最佳方法是什么,但有选择地将默认分支上的更改合并到一个新的独立分支中?这是与 Mercurial 合并/分支的正确方法吗?如果我这样做,我以后是否可以“删除”这些分支之一以支持此功能的一个特定实现?

最佳答案

如果您有像 Beyond Compare 这样的外部 diff 程序,这很容易。

  • 启用 extdiff 扩展并将其配置为使用您的 diff 程序(例如,我设置了我的系统,以便 hg bcompare 将运行 Beyond Compare)
  • 将你的 repo 的工作目录更新到你想要开始新分支的修订版。
  • 使用 Mercurial 来运行你的 diff 程序,以进行实验性更改。
  • Cherry 从实验代码中选择您想要的更改,无论是整个文件还是文件中的较小差异。
  • 当您退出 diff 程序时,您的工作目录将包含您选择的更改。
  • 启动一个新分支 ( hg branch ) 或设置一个书签 ( hg bookmark ) 来跟踪这组新更改。有关差异的说明,请参阅 http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/
  • 提交更改,然后开始!

  • 当您决定需要哪种实现时,您可以更新到 不希望 想要的分支的头部,并使用 hg commit --close-branch 将其标记为关闭,这仍将其作为存储库中的头部。如果要将其作为头部移除,请更新到 执行 想要的分支的头部,并使用 hg merge --tool internal:local <rev-of-the-other-head> 合并它,但保留所有想要的更改。

    关于mercurial - 使用 Mercurial 合并一些修订版,但不合并其他修订版,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5738841/

    10-14 13:24
    查看更多