我在我的 repo 中使用 hg 书签,因为它们让我可以轻松地处理不同的功能。Mercurial 的问题在于,所有提交都与一个分支相关联。所以,我所做的是我有很多本地更改,有很多拉(但不是更新的更改)到同一个分支。换句话说,我的本地仓库如下所示:
default -------E-F---------
newf -A-C-D---------J---
newf,bmark --\--------H-I----K
newf
是一个远程分支,拉到 J,bmark
是我创建的书签。中的所有内容newf
,标记bmark
为我的机器都是严格本地的。
现在,我想将 H、I 和 K(实际上,有大约 20 处更改)重新分配到不同的分支,我可以将其推送到 repo。有没有办法在 Mercurial 中做到这一点,以便我的工作副本(我仍然有一些未提交的更改)尽可能不受影响?
根据使用“rebase”的建议,我尝试了以下步骤:
hg up -r A
hg branch newbranch && hg ci -m "will hold some development"
# This effectively made a commit X
hg up bmark
hg rebase -d newbranch
除了得到一些关于阶段的错误之外,rebase 给了我一些我不期望的东西:
default -------E-F---------
newf -A-C-D---------J---
newf,bmark \ -----H-I----K
newbranch \X/
也就是说,H
,I
和K
被列为仍然属于newf
and bmark
,并且它们在X
属于 branch的提交上位于顶部newbranch
。我在这里做错了吗?