0

我不小心更新到以前的版本,并在默认分支下从它提交,导致默认分支下有 2 个头。我想将其中一个头移到另一个分支。我想移动的这个头是在几笔交易前完成的。如何更改它所属的分支,以便我可以在不强制推送的情况下将另一个头推送到服务器?

到目前为止,我还没有向服务器推送任何内容。如果归根结底,我可以复制我需要的文件并重新克隆存储库。

4

2 回答 2

0

您可以使用rebase扩展重写历史记录。它已经安装了,你只需要启用它(在 tortoiseHG 中从文件 > 设置 > 扩展)。在 tortoiseHG 中你可以找到它,如果你右键点击一个修订,去“修改历史”,然后选择“rebase”。但为了获得更多控制,我建议使用命令行。

假设您有一个修订版w,它是默认分支的新负责人。(w可能有后代会随之移动)。

-o-o-o-o
    \
     w

它的父级应该是b另一个分支中的一些修订(未显示)。只需输入:

hg rebase --source w --dest b --detach

而已!它将变基w和它的所有后代(如果有的话),所以它的新父级是b. b除非您添加 ,否则它将分配给与 相同的分支名称--keepbranches。该标志--detach可确保您在某些情况下不会得到复杂的拓扑。

于 2012-10-31T20:50:44.053 回答
0
  1. 变基
  2. Graft(移动到新地方)+ Histedit(杀死旧变更集)
  3. MQ,如果你知道的话(将 cset 转换为 MQ 补丁,更新到新的父级,qpop,qfinish)
于 2012-10-31T20:53:23.897 回答