18

这个答案显示了如何将提交降级为补丁,但是如何将 mq 补丁仅转换为本地更改?

4

2 回答 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 qrmhg 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 回答