Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Version control 重新应用';他已经退出了_Version Control_Mercurial - Fatal编程技术网

Version control 重新应用';他已经退出了

Version control 重新应用';他已经退出了,version-control,mercurial,Version Control,Mercurial,好吧,这里是复杂的mercurial场景,但是mercurial中的每个场景似乎都变得复杂了 我们有两个分支,dev和test。在dev中进行了很多更改,然后合并到测试中,如下所示: hg update test hg merge dev hg commit -m "merging dev into test yo" hg push hg backout --rev=<test rev of my commit> --parent=<test rev from before

好吧,这里是复杂的mercurial场景,但是mercurial中的每个场景似乎都变得复杂了

我们有两个分支,dev和test。在dev中进行了很多更改,然后合并到测试中,如下所示:

hg update test
hg merge dev
hg commit -m "merging dev into test yo"
hg push
hg backout --rev=<test rev of my commit> --parent=<test rev from before the merge>
但后来我们意识到我们不想从dev那里得到所有这些更改。所以我运行了一个类似这样的备份:

hg update test
hg merge dev
hg commit -m "merging dev into test yo"
hg push
hg backout --rev=<test rev of my commit> --parent=<test rev from before the merge>
hg回退--rev=--parent=
这成功地从合并中撤消了所有更改

问题是:我现在想从dev分支移植一些更改,但它忽略了所有更改,说“跳过祖先修订版X”


有没有办法重新应用这些更改?(除了导出和重新导入差异?

我不知道
test
分支的实际状态,但是如果您仍然接近退出,我建议您在初始合并之前退出
test
。使用此选项,您将不会从另一个分支继承父级

    @    new head
    |
    |
  o |    backout
  | |
  | |
  o |    bad merge
 /| |
| | |
o | |    other branch
| | |
| |/
| o      before merge
| |
| |

之后,从
dev
中移植您需要的,并将两个磁头重新合并,以保持一个磁头。

OP确实明确表示他们希望避免使用diff,但这种方法在某些情况下效果很好,其他人可能会发现它很有用。此外,他们没有说明为什么要避免导入/导出(差异)

摘自

您可以使用此命令重新应用更改

假设您的更改在第78版中

转到回购的根目录并运行:

hg出口78 | hg进口


这将自动重新提交第78版中更改的内容。您还可以指定不自动提交的选项,和/或您可以导出到文件,然后在单独的步骤中导入。

使用
-f
选项强制
hg
继续:

hg graft -f -r 12345

(这是对的回答)

我也做过类似的事情。我有这个问题,做一个虚拟合并来移除额外的头部似乎是可行的。但后来我读到关于合并有利于单亲的报道,这似乎是更直接的方式。我知道我以前见过你的案例!看来这两种解决方案仍然存在相同的问题?我想要的转速都在我的历史记录中,我必须将它们区分回来,是吗?不是真的。如果从合并之前开始,当前解决方案将删除父级。移植将是可能的,因为父母还不在历史上。只有在你移植了你的改变之后,才可以重新组合这两个头。