mercurial - 如果在不同的分支上,为什么我不能重新定位到源变更集的祖先?

标签 mercurial rebase

我想知道为什么下面的模式是不可能的。

创建了一个本地功能分支(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/

相关文章:

git rebase -i HEAD~7 -- 在编辑器中只显示 "noop"

git - 如何检查 git rebase 发生了什么变化?

mercurial - 有趣的是,当为 Mercurial 添加 .hgignore 时,此文件本身在 hg 状态中显示为 "?"?

Mercurial - 将不相关的修订作为另一个修订的分支

windows - 在 Windows 上通过 ssh 连接到 mercurial

git - 如何更改已提交 GitHub 上的身份

Git 重置当前 rebase

mercurial - 在 rebase 后拉取 repo 上的提交

mercurial - 每次使用 Mercurial 时,ssh 都不会要求输入密码

mercurial - : is commit A "reachable" from commit B 的 hg 语法是什么