出于某种原因,我有以下情况:
现在我想摆脱default_2
并快进default
到转89.但是当我这样做时
hg up -r default
hg transplant 61:89
或
hg transplant -b default_2
Mercurial(1.8.2 + 20110401)只是将我的工作副本更新为rev 89.使用mq
扩展名看起来我必须逐个指定所有中间修订版。
所以问题是:
transplant
不起作用? (这里建议:https://www.mercurial-scm.org/wiki/RebaseProject#When_rebase_is_not_allowed)答案 0 :(得分:4)
使用Mercurial Queues,您可以:
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
分支,然后将default2
合并到default
。
答案 1 :(得分:0)
从Mercurial 2.0开始,您可以使用 graft 命令(内置命令主要取代移植扩展名):
hg graft 61:89
另请参阅differences between graft and transplant上的相关问题。
请注意,Mercurial不支持命名分支之间的实际快速转发的原因是分支名称是Mercurial提交对象的一部分。另请参阅此article detailing the Mercurial branch model。
答案 2 :(得分:0)
尝试:
hg branch --force default
重新创建名为default
的新分支