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

Mem*_*mke 2 mercurial patch mercurial-queue mercurial-extension

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

在我提交另一个变更集之前,我们决定删除我的更改.所以我用一些未经修改的变化做了补丁qpop.

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

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

然后,在我这样做之后,我将commit/ push清除更改到存储库中.

Mercurial Queues如何做到这一点?

Ry4*_*ase 5

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

hg diff --change NODEID_YOU_REGRET --reverse > undoes-what-you-regret.patch
Run Code Online (Sandbox Code Playgroud)

可以使用以下命令将该补丁放入mercurial队列:

hg qimport undoes-what-you-regret.patch
Run Code Online (Sandbox Code Playgroud)

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

hg backout --rev NODEID_YOU_REGRET
Run Code Online (Sandbox Code Playgroud)

这将创建一个新的头,你可以hg merge进入任何开发线,它是原始变化的后果 - 即:具有该代码的任何东西.