Version control Mercurial:当用作闭合分支上的祖先时,如何忽略分支的多个头

Version control Mercurial:当用作闭合分支上的祖先时,如何忽略分支的多个头,version-control,mercurial,Version Control,Mercurial,另一个git用户被Mercurial分支弄糊涂了。我做了一些我不知道如何撤销的事情,因此我无法推动我完全不相关的更改。任何帮助都将不胜感激 我想故事是这样的: 我开始做一些关于默认值的事情。我意识到这是一个错误,因为它将成为一个公关,所以我下一次提交分支功能1。然后我在bitbucket上提交了一份PR 我开始做一些其他的事情,也是出于默认,这次我确定要使用一个分支功能2,并且在我的功能1提交之前,我特意用修订号“hg up-r…”,以便不包含该更改 在这一点上,历史看起来像

另一个git用户被Mercurial分支弄糊涂了。我做了一些我不知道如何撤销的事情,因此我无法推动我完全不相关的更改。任何帮助都将不胜感激

我想故事是这样的:

  • 我开始做一些关于默认值的事情。我意识到这是一个错误,因为它将成为一个公关,所以我下一次提交分支功能1。然后我在bitbucket上提交了一份PR

  • 我开始做一些其他的事情,也是出于默认,这次我确定要使用一个分支功能2,并且在我的功能1提交之前,我特意用修订号“hg up-r…”,以便不包含该更改

在这一点上,历史看起来像

                   -- G (default) - H (feature1)
                  /
.. D - F (default)
                  \
                   -- I - J - K (feature2)
                   -- G (default) - H (feature1) [my repository, closed]
                  /
.. D - F (default)--- L (default) [parent repository]
                  \
                   -- I - J - K (feature2) [my repository]
  • 我的PR没有被接受,所以我关闭了feature1

  • 父存储库中已经有了默认开发,所以我
    hgpull
    。现在看起来有点像

                       -- G (default) - H (feature1)
                      /
    .. D - F (default)
                      \
                       -- I - J - K (feature2)
    
                       -- G (default) - H (feature1) [my repository, closed]
                      /
    .. D - F (default)--- L (default) [parent repository]
                      \
                       -- I - J - K (feature2) [my repository]
    
。。加上我对其他分支机构的许多变化一无所知

  • 但是我对feature2很满意,我想为它做一个公关,所以我试着推出新的分支,但我得到了信息

    abort: push creates new remote head 7a341084eb8a!
    
    中止:推送创建新的远程磁头7a341084eb8a

好的,那么使用
hg glog
,它显示校验和与父工作对应,即上图中的
L
。Mercurial似乎在抱怨我在一个关闭的分支上提交了一个分支
default
,该分支尚未合并到
default
!但我不想让它再存在了!然而,我不想剥去它,因为那样会使阅读旧的、封闭的PR变得不可能

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

abort: push creates new remote head 062efd5d0886!
abort: push creates new remote head 062efd5d0886!
i、 同样的问题,但不同的头。这一个似乎与功能2的第一个补丁对应!也就是说,在我的图表中,
I

这毫无意义。。一个关闭的分支阻止我将更改推送到另一个完全不同的分支上。同时,我不知道在推我的feature2分支时,它甚至在说什么多个头部,因为实际上只有一个feature2。建议在推之前“合并”,但我甚至不知道要合并什么。我不想在默认情况下合并我被拒绝的更改,当我在feature2上执行
hg merge default
时,我想也许我需要考虑最新的上游更改,这将从我关闭的分支而不是上游头合并
G

所以,很明显,我不理解Mercurial分支。在git中,我只需删除feature1分支,就是这样。我如何解决这个问题

但是我对feature2很满意,我想为它做一个公关,所以我试着推动新的分支,但我得到了信息

abort: push creates new remote head 7a341084eb8a!
此时,
revision L
是分支机构的负责人
default
,您正在尝试发送
revision G
。修订版G位于
默认
分支中,因此您将创建另一个头部。分支
feature1
已关闭,但未关闭
修订版G
中的
默认分支。您可以更新到
修订版G
,然后关闭分支,或者将其与
修订版L
合并

如果我尝试只推我自己的分支,hg push--新分支-b特性2, 然后我得到:

abort: push creates new remote head 062efd5d0886!
abort: push creates new remote head 062efd5d0886!
如果
revision I
位于
default
分支中,则会出现与上述相同的问题

如果没有,请尝试
hg push-r