我不小心更新到以前的版本,并在默认分支下从它提交,导致默认分支下有 2 个头。我想将其中一个头移到另一个分支。我想移动的这个头是在几笔交易前完成的。如何更改它所属的分支,以便我可以在不强制推送的情况下将另一个头推送到服务器?
到目前为止,我还没有向服务器推送任何内容。如果归根结底,我可以复制我需要的文件并重新克隆存储库。
我不小心更新到以前的版本,并在默认分支下从它提交,导致默认分支下有 2 个头。我想将其中一个头移到另一个分支。我想移动的这个头是在几笔交易前完成的。如何更改它所属的分支,以便我可以在不强制推送的情况下将另一个头推送到服务器?
到目前为止,我还没有向服务器推送任何内容。如果归根结底,我可以复制我需要的文件并重新克隆存储库。
您可以使用rebase扩展重写历史记录。它已经安装了,你只需要启用它(在 tortoiseHG 中从文件 > 设置 > 扩展)。在 tortoiseHG 中你可以找到它,如果你右键点击一个修订,去“修改历史”,然后选择“rebase”。但为了获得更多控制,我建议使用命令行。
假设您有一个修订版w
,它是默认分支的新负责人。(w
可能有后代会随之移动)。
-o-o-o-o
\
w
它的父级应该是b
另一个分支中的一些修订(未显示)。只需输入:
hg rebase --source w --dest b --detach
而已!它将变基w
和它的所有后代(如果有的话),所以它的新父级是b
. b
除非您添加 ,否则它将分配给与 相同的分支名称--keepbranches
。该标志--detach
可确保您在某些情况下不会得到复杂的拓扑。