我有默认分支,它是公共的,而功能分支是私有的。
default 1-----4-------8
\ \
feature 2-3---5-6-7
当我对默认值进行更新时,我希望它们可用于功能分支。 我可以通过重复合并来做到这一点,但后来我最终会有很多合并。 编辑历史记录没有问题;功能分支仅在我的本地 库中。
我想这样做:
default 1-----4-8
\ \
feature 2-3-----5-6-7
甚至更好:
default 1-4-8
\
feature 2-3-5-6-7
我试着这样做:
hg rebase --dest 8 --source 5
但它将元素移动到错误的分支。
default 1-----4-8-5-6-7
\ /
feature 2-3----
分支在不同文件中有变化,因此无需担心复杂的合并。
修改
--keepbranches
选项似乎在表面上做了我想做的事情。但合并提交信息似乎很奇怪:就像MercurialHg认为它仍然是默认分支,但只是重命名为feature -branch。这似乎是一种破解,我并不是100%确信这是要走的路。
答案 0 :(得分:1)
我认为您的工作流程比使用rebase更适合使用Mercurial Queues。
原因是,当它曾经是1时,将分支的父级更改为8并不是一件微不足道的事情,但这正是使用MQ时的效果。
Mercurial队列保留一组补丁,每个版本都有一个补丁,并且在您完成功能的同时,可以根据需要轻松应用/取消应用。
在您的方案中,您将执行以下操作:
这将最终出现在你想要的更好的情况中。
通常,您不必为每个变更集创建一个补丁。你会创建一个补丁并不断刷新它,直到你对它感到满意为止。
如果您对该功能的完成感到满意,那么您需要完成补丁并推动其他人看到代码。
您可以查看此tutorial以了解MQ。