另一个git用户在这里被Mercurial分支混淆了。我已经做了一些我无法弄清楚如何撤消的事情,因此我无法推动我完全不相关的变化。任何帮助将不胜感激。
我认为这是故事:
我开始在默认上开展工作。我意识到这是一个错误,因为它会成为PR,所以我在分支 feature1 上做了下一次提交。然后我在bitbucket上提交了一份公关。
我开始处理其他事情,也是从默认开始,这次我肯定会使用分支 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 感到满意,我想为它做一个公关,所以我尝试hg push --new-branch
,但我收到了消息,
abort:push创建新的远程头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 。建议在推送之前“合并”,但我甚至无法弄清楚要合并的 。我不想在默认上合并我拒绝的更改,当我在 feature2 上执行hg merge default
时,我想我可能需要考虑最新的上游更改,这将从我的已关闭分支而不是上游头部合并G
。
所以,显然,我只是不了解Mercurial分支机构。在git我只会删除 feature1 分支,那就是那个。我该如何解决这个问题?
答案 0 :(得分:0)
但是我对feature2感到满意,我想为它制作一个PR,所以我尝试hg push --new-branch,但是我得到了消息,
abort: push creates new remote head 7a341084eb8a!
此时,revision L
是分支default
的负责人,您正在尝试发送revision G
。修订版G位于default
分支中,因此您将创建另一个头部。分支feature1
已关闭,但default
中的revision G
分支未关闭。您可以更新 revision G
,关闭分支,或合并 revision L
。
如果我试图推动我自己的分支,hg push --new-branch -b feature2, 然后我明白了:
abort: push creates new remote head 062efd5d0886!
如果revision I
分支中有default
,则您遇到与上述相同的问题。
如果没有,请尝试hg push -r <rev number of revision I>
。