在mercurial中退出许多提交(15)

时间:2014-12-22 11:01:12

标签: mercurial backout

我有"测试"分支,我有15个不正确的提交(它们是这个分支中的最后一次提交)。我不需要这些提交,我想支持它们。但我也需要进行测试"分支,我不能关闭它。

  • 如何退出多次提交?使用mercurial standart backout来做这件事太难了,会有太多的提交和合并。有没有办法在一次大提交中合并所有的backout-commit?

  • 有没有办法重命名分支并关闭它?

远程服务器上存在所有更改。这些更改不是整个回购的最后一个,它们只是在测试分支中的最后一个更改集。

2 个答案:

答案 0 :(得分:3)

如果您需要将更改集保留在历史记录中(特别是因为您无法确定它们是strip - 来自每个仓库),您可以选择以下几种方法:

1)只需将测试分支的--close-branch提交update到该分支上的最新修订版,然后从那里重新打开测试分支。这是有效的,因为命名分支可以有多个头。

2)使用hg revert -r <last good rev>并提交。这个使工作目录与<last good rev>完全相同,然后您可以提交变更集,从而有效地撤消您要删除的15个更改中发生的事情。我会使用hg diff -r <last good rev>来确保它是完全正确的,因为您可能需要修复已添加或删除的文件。

如果您能够strip来自服务器的更改(如@Dalija's answer中所述),但希望在本地保留版本以备将来使用,请查看hg phase以强制使用secret之后本地的strip阶段 - 来自其他地方。这样你就会拥有它们,但默认情况下它们不会被推送。

答案 1 :(得分:1)

您可以使用hg strip从存储库中删除变更集及其后代。但是你必须在你希望修剪test分支的所有存储库中执行此操作,否则它们将在pull时返回。

https://www.mercurial-scm.org/wiki/StripExtension