我有"测试"分支,我有15个不正确的提交(它们是这个分支中的最后一次提交)。我不需要这些提交,我想支持它们。但我也需要进行测试"分支,我不能关闭它。
如何退出多次提交?使用mercurial standart backout来做这件事太难了,会有太多的提交和合并。有没有办法在一次大提交中合并所有的backout-commit?
有没有办法重命名分支并关闭它?
远程服务器上存在所有更改。这些更改不是整个回购的最后一个,它们只是在测试分支中的最后一个更改集。
答案 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
时返回。