我想知道为什么下面的模式是不可能的。
创建了一个本地功能分支(minor_feature - 不打算与世界共享)后,我想将其上的工作重新定位到一个众所周知的分支(稳定)的尖端。但是我发现,在从分支离开稳定后没有取得进展的情况下,rebase 找不到任何可以重新设置的基数。
我明白这打破了 rebase 的目标不能是源的祖先的规则,但无法弄清楚为什么在所示的简单情况下应该禁止这样做。我也明白,除了分支,拓扑在 rebase 期间实际上不会改变。但考虑到分支名称对拓扑结构确实很重要,这似乎只是一个特例,因为稳定版没有提交进一步的修订。在稳定的顶端进行一次额外的修改(比如从其他地方拉进来)我当然可以执行 rebase
o branch:minor_feature
| rev:4
| changeset:746d8191aa5d
|
o branch:minor_feature
| rev:3
| changeset:520f565ba7f2
|
@ branch:stable
| rev:2
| changeset:64e7c753c090
|
o branch:stable
| rev:1
| changeset:3dc55a5c9971
|
o branch:stable
rev:0
changeset:fbf1f426945c
$hg rebase -b minor_feature
nothing to rebase
-- 谢谢 克里斯·戈尔曼
最佳答案
Rebase 严格用于更改变更集的祖先。正如您所观察到的,您并没有在这里改变祖先。分支不包括在祖先计算中。
我不是 100% 确定您想要完成什么。如果是为了有效地删除分支,那么只要你没有推送,你就可以使用 MQ 扩展。导入变更集,全部弹出。确保您已更新到稳定分支(默认情况下应该是),然后将它们全部推回。
他们现在应该都在稳定分支上。
关于mercurial - 如果在不同的分支上,为什么我不能重新定位到源变更集的祖先?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4145755/