我已经阅读了 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
== 1
、 I
== 2
和 G
== 3
。 rebase 后, 3
保持与 1
的关系,就像 G'
保持与 D
的关系一样。这是因为 D
不是 I
的祖先,并且:
你真的想删除这种关系,然后,根据文档,你需要一个开发版本来获取 --detach
选项:
关于Mercurial Rebase 场景,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4573916/