1

由于某种原因,我有以下情况:

在此处输入图像描述

现在我想摆脱default_2并快进default到 rev 89。但是当我这样做时

hg up -r default
hg transplant 61:89

或者

hg transplant -b default_2

Mercurial (1.8.2+20110401) 只是将我的工作副本更新到 89 版。通过mq扩展,看起来我必须一个接一个地指定所有中间版本。

所以问题是:

  1. 为什么不起作用transplant?(这里推荐:https ://www.mercurial-scm.org/wiki/RebaseProject#When_rebase_is_not_allowed )
  2. 有没有一种方法可以快速前进而不会很痛苦?
4

3 回答 3

4

使用 Mercurial 队列,您可以:

hg qinit
hg qimport -r 61:89
hg qpop -a           # unapply all patches
hg up default        # return to your default branch
hg qpush -a          # apply all patches on default
hg qfinish -a        # move applied patches into repo history

注意:这假设修订版 61:89 尚未推送到公共回购。给定的mq命令将修改历史。如果这些修订已经被推送,那么最好简单地关闭default2分支,然后合并default2default.

于 2011-04-19T13:55:21.747 回答
1

尝试:

 hg branch --force default

它重新创建名为 default 的新分支

于 2016-06-16T14:17:32.703 回答
0

从 Mercurial 2.0 开始,您可以使用graft命令(内置命令在很大程度上取代了移植扩展):

hg graft 61:89

另请参阅有关移植物和移植物之间差异的相关问题。

请注意,Mercurial 不支持在命名分支之间实际快进的原因是分支名称是 Mercurial 提交对象的一部分。另请参阅详细介绍 Mercurial 分支模型的这篇文章

于 2012-11-02T21:14:10.333 回答