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