这个答案显示了如何将提交降级为补丁,但是如何将 mq 补丁仅转换为本地更改?
问问题
2143 次
2 回答
25
简短的回答
确保应用了补丁,然后:
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,将补丁导出到剪贴板(工作台 > 右键单击补丁 > 导出 > 复制补丁),然后取消应用补丁,最后从剪贴板导入,目标为“工作目录”似乎可行。以下是演示此过程的一些屏幕截图:
于 2012-11-20T14:13:14.917 回答
7
一个可以说更简单的替代方案:
hg qfinish qtip
hg strip -k tip
也就是说,完成补丁,然后删除生成的提交,同时保留其更改(-k
选项strip
)。
于 2014-04-04T18:34:49.347 回答