17

在一个 mercurial 存储库中,“默认”分支已经过时,以至于合并来自“开发”的更改不再有意义,“开发”是一个具有应用程序最新部署版本的命名分支。

我如何关闭当前的默认分支,然后使用开发的头创建一个新的默认分支,而不是将开发合并为默认分支?

我已经看到了一些其他类似的问题和答案,也许相同,但我仍然无法理解这应该如何工作。

谢谢!

4

3 回答 3

28

如果与合并后default有所不同,develop并且您希望与合并后default完全相同develop,则需要一组与 Edward 给您的命令略有不同的命令(这也适用于develop的直接后代default)。

hg update -C default
hg -y merge --tool internal:fail develop
hg revert --all --no-backup -r develop
hg resolve --all --mark
hg commit -m "merge updating default to current develop"

这意味着任何冲突都将导致未解决的合并。然后,您将所有内容恢复为与分支上的相同develop(没有备份,因此您不会留下很多 .orig 文件)。

于 2013-02-20T22:51:44.373 回答
2

根据您的评论,关闭分支不是必需的,这里有一系列步骤应该使默认分支与开发分支保持一致:

  1. hg update default
  2. hg merge --tool internal:other-- 在获得开发分支特权的同时进行合并
  3. hg diff -r develop-- 与 develop 进行比较以确保您拥有准确的副本
  4. hg commit -m "merge updating default to current develop"

完成后,您应该有一个更新的默认值来反映开发分支,使它们重新同步。

于 2013-02-20T19:52:29.583 回答
0

我认为最好使用 Tortoisehg 中的一个概念来解释它是如何工作的。

  • hg update发展分支
  • 选择默认分支的头,并选择与本地合并
  • 然后选择discard all changes from merge target (other),这样默认就被合并到develop而不影响develop
  • 然后从开发头分支到默认,使用hg branch default,默认重新启动
于 2013-02-21T08:02:32.290 回答