你如何处理Mercurial中一个封闭分支的传出提交?

时间:2016-02-12 08:50:47

标签: mercurial

我提交了一个分支但没有推动它。与此同时,该分支机构已关闭,我向其他分支机构提交了更多提交。我在尝试推送时遇到错误,除非我一次推动一个分支。这个错误是有道理的,因为这是关闭分支的重点,但我怎么能“抛弃”我的提交?我不想再这样了。

2 个答案:

答案 0 :(得分:1)

您还需要从本地存储库中删除该提交。 Mercurial为此任务执行strip命令(which is its own extension,但它默认发货,只需要激活)。因此,在您的.hgrc中,您需要的mercurial配置文件

[extensions]
strip =

mq扩展提供了相同的功能。启用后,您可以删除不需要的提交及其所有后代

hg strip -rXXX

其中XXX是您要删除的变更集。盐粒:要小心它,也许在之前使用strip来创建存储库的本地克隆,因为剥离是一个不容易撤消的历史编辑操作。

答案 1 :(得分:1)

关闭分支不应该自己阻止你推动。封闭分支只是一个以提交结束的分支,该提交带有“封闭分支”元信息。您可以通过再次提交它来重新打开分支(此时,最近的提交没有“封闭分支”元信息,因此分支被视为再次打开)。关闭分支的唯一目的是使它不会出现在“hg分支”中。

你没有提到你得到的错误,但我认为它来自其他人做一个关闭分支提交而你在其他地方提交,所以现在分支有两个头,你不能推新没有-f的头。在这种情况下,答案就是合并两个头(你的提交和封闭分支头[1]),然后推送。

[1]或者,在封闭的分支头顶部重新提交你的提交。