This answer显示了如何降级对补丁的提交,但是如何才能将mq补丁转换为本地更改?
答案 0 :(得分:24)
简短回答
确保应用补丁,然后:
hg qrefresh nothing
hg qpop --keep-changes
hg qdelete "Name of patch"
答案很长
首先,您需要确保修补程序不会跟踪任何更改。为此,请使用
hg qrefresh nothing
nothing
只是存储库中不的随机文件名。我通常使用hg qref 0
来简化。 hg qrefresh
接受可选的文件模式。如果给出,补丁将跟踪与模式匹配的更改 - 并且仅跟踪那些。当没有任何内容与文件模式匹配时,补丁将不会跟踪任何更改,因此仅会进行本地更改。
现在你有一个无用的补丁,你有一些局部的变化。要清理,你可以
hg qpop --keep-changes
即使有本地更改,也要弹出补丁。最后,要删除死,空和未应用的补丁,您可以使用
hg qrm "Name of patch"
您无法删除已应用的修补程序,这就是您需要hg qpop --keep-changes
步骤的原因。
(注意:hg qrm
和hg qremove
是hg qdelete
的别名。)
如果使用TortoiseHg
使用TortoiseHg,将补丁导出到剪贴板(Workbench>右键单击补丁>导出>复制补丁),然后取消应用补丁,最后从目标为“工作目录”的剪贴板导入上班。以下是一些演示此过程的屏幕截图:
答案 1 :(得分:7)
一个可以说是更简单的选择:
hg qfinish qtip
hg strip -k tip
即,完成修补程序,然后删除生成的提交,同时保留其更改(-k
选项strip
)。