Mercurial:在封闭分支上用作祖先时如何忽略分支的多个头
Mercurial: How to ignore multiple heads of a branch when used as ancestor on a closed branch
另一个 git 用户对这里的 Mercurial 分支感到困惑。我做了一些我无法弄清楚如何撤消的事情,因此我无法推动完全不相关的更改。任何帮助将不胜感激。
故事是这样的,我想:
我开始在 default 上做一些事情。我意识到这是一个错误,因为它会成为 PR,所以我在分支 feature1 上进行了下一次提交。然后我在 bitbucket 上提交了一个 PR。
我开始做其他事情,也是在 default 之外,这次我确定要使用分支 feature2,我故意 "hg up -r ..." 在 之前 我的 feature1 提交,以便不包含该更改。
此时历史看起来像,
-- G (default) - H (feature1)
/
.. D - F (default)
\
-- I - J - K (feature2)
我的 PR 没有被接受,所以我关闭了 feature1。
父仓库已经默认开发了,所以我hg pull
。现在它看起来像,
-- G (default) - H (feature1) [my repository, closed]
/
.. D - F (default)--- L (default) [parent repository]
\
-- I - J - K (feature2) [my repository]
.. 加上我不知道的其他分支的许多更改。
但我对 feature2 很满意,我想为它做一个 PR,所以我尝试 hg push --new-branch
,但我得到消息,
abort: push creates new remote head 7a341084eb8a!
好的,所以使用 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 I
在default
分支,你的问题和上面一样。
如果不行,试试hg push -r <rev number of revision I>
。
另一个 git 用户对这里的 Mercurial 分支感到困惑。我做了一些我无法弄清楚如何撤消的事情,因此我无法推动完全不相关的更改。任何帮助将不胜感激。
故事是这样的,我想:
我开始在 default 上做一些事情。我意识到这是一个错误,因为它会成为 PR,所以我在分支 feature1 上进行了下一次提交。然后我在 bitbucket 上提交了一个 PR。
我开始做其他事情,也是在 default 之外,这次我确定要使用分支 feature2,我故意 "hg up -r ..." 在 之前 我的 feature1 提交,以便不包含该更改。
此时历史看起来像,
-- G (default) - H (feature1)
/
.. D - F (default)
\
-- I - J - K (feature2)
我的 PR 没有被接受,所以我关闭了 feature1。
父仓库已经默认开发了,所以我
hg pull
。现在它看起来像,-- G (default) - H (feature1) [my repository, closed] / .. D - F (default)--- L (default) [parent repository] \ -- I - J - K (feature2) [my repository]
.. 加上我不知道的其他分支的许多更改。
但我对 feature2 很满意,我想为它做一个 PR,所以我尝试
hg push --new-branch
,但我得到消息,abort: push creates new remote head 7a341084eb8a!
好的,所以使用 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 I
在default
分支,你的问题和上面一样。
如果不行,试试hg push -r <rev number of revision I>
。