我已经阅读了 RebaseProject 页面并尝试了一个不平凡的例子
(不是重新建立一个完整的分支)。它类似于案例 rebase D on
场景 B 中的 I。

这是rebase之前的情况:

default : 0 ----- 2
            \
feature :     1 ----- 3

现在我想在 3 上重新设置 2 ,给出:
default : 0 ----- 2 ----- 3
            \
feature :     1

不幸的是,RebaseProject 中没有给出确切的命令
页面,但根据我对使用概要的理解,它应该是:
hg rebase --source 3 --dest 2

但不知何故,我的理解一定是有缺陷的,因为我得到了一个与合并相结合的 rebase :
default : 0 ----- 2 ----- 3
            \           /
feature :     1 -------

这是为什么?

重现场景的命令:
hg init
touch a
hg add a
hg commit -m "added a"
hg branch feature
touch b
hg add b
hg commit -m "added b on feature"
hg up -C default
touch c
hg add c
hg commit -m "added c on default"
hg up -C feature
echo "feature" >> a
hg commit -m "changed a on feature"
hg rebase --source 3 --dest 2

最佳答案

您的场景看起来与 Rebase Project 场景的 rebase G onto I 的部分 scenario B 非常相似:

在您的场景中, D == 1I == 2G == 3 。 rebase 后, 3 保持与 1 的关系,就像 G' 保持与 D 的关系一样。这是因为 D 不是 I 的祖先,并且:

你真的想删除这种关系,然后,根据文档,你需要一个开发版本来获取 --detach 选项:

关于Mercurial Rebase 场景,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4573916/

10-13 07:32
查看更多