Mercurial:在封闭分支上用作祖先时如何忽略分支的多个头

Mercurial: How to ignore multiple heads of a branch when used as ancestor on a closed branch

另一个 git 用户对这里的 Mercurial 分支感到困惑。我做了一些我无法弄清楚如何撤消的事情,因此我无法推动完全不相关的更改。任何帮助将不胜感激。

故事是这样的,我想:

此时历史看起来像,

                   -- G (default) - H (feature1)
                  /
.. D - F (default)
                  \
                   -- I - J - K (feature2)

.. 加上我不知道的其他分支的许多更改。

好的,所以使用 hg glog 并且校验和似乎与父工作相对应,即上图中的 L。 Mercurial 似乎在抱怨我在一个关闭的分支上有一个提交,分支 default 尚未合并到 default!但我不想让它存在了!但是,我不想删除它,因为那样的话,旧的、封闭的 PR 就不可能阅读了。

如果我尝试只推送我自己的分支,hg push --new-branch -b feature2,那么我得到:

abort: push creates new remote head 062efd5d0886!

即,同样的问题,但头部不同。这似乎与 feature2 的第一个补丁相对应!即我图中的I

这毫无意义.. 已关闭 分支阻止我将更改推送到另一个完全不同的分支。同时,在推送我的 feature2 分支时,我无法弄清楚它甚至在谈论什么多个头,因为实际上只有一个 feature2。推荐是先"merge"再push,但是我这里也想不通要合并什么。我不想在 default 上合并我拒绝的更改,当我在 feature2 上执行 hg merge default 时,我想也许我需要考虑到最新的上游变化,这合并了 G,来自我的 关闭的分支 而不是上游头部。

所以,很明显,我只是不了解 Mercurial 分支。在 git 中,我只删除 feature1 分支,就是这样。我该如何解决?

But I'm happy with feature2 and I want to make a PR for it, so I try to hg push --new-branch, but I get the message,

abort: push creates new remote head 7a341084eb8a!

此时,revision L 是分支 default 的负责人,您正在尝试发送 revision G。修订版 G 在 default 分支中,因此您将创建另一个头部。 feature1 分支已关闭,但 revision G 中的 default 分支未关闭。您可以更新到 revision G,然后关闭那里的分支,或者合并 revision L.

If I try to push just my own branch, hg push --new-branch -b feature2, then I get:

abort: push creates new remote head 062efd5d0886!

如果revision Idefault分支,你的问题和上面一样。

如果不行,试试hg push -r <rev number of revision I>