退出不需要的更改并从中进行修补

时间:2012-04-27 12:32:12

标签: mercurial patch mercurial-queue mercurial-extension

我和远程回购的人合作。我们意识到我所做的更改应该从回购中删除。但是这些变化存在于许多变化中,并与某人的变化相混合。

我们决定在提交另一个变更集之前删除我的更改。所以我从未经修改的更改和qpop中创建了修补程序

现在我想从遥控器中退出其余的更改,并选择性地修改这些更改,让我的同事不会发生变化。

此外,我想在一个补丁中使用来自 patch_ive_made_before 的差异从新补丁获得差异。换句话说 - 我想从2个不同的变更集中选择一个补丁。我必须手动完成吗?

然后,在我这样做之后,我将commit / push清除对存储库的更改。

Mercurial Queues如何做到这一点?

1 个答案:

答案 0 :(得分:5)

您可以使用此命令创建与上一次更改相反的修补程序:

hg diff --change NODEID_YOU_REGRET --reverse > undoes-what-you-regret.patch

可以使用以下命令将该补丁放入一个多变的队列中:

hg qimport undoes-what-you-regret.patch

但是,如果我这样做,我会完全跳过mq而只是这样做:

hg backout --rev NODEID_YOU_REGRET

这将创建一个新头,您可以hg merge进入任何开发线,这是原始更改的后果 - 即:任何具有该代码的内容。