HG:撤消历史记录中的提交

Don*_*ker 30 mercurial tortoisehg

我有一个转储1,2,3,4,5和6的HG存储库.

当我提交第4版时,我在不知不觉中拙劣地修改了我不应该拥有的rev3中的一些变化.直到第6版已经提交,我才注意到这一点.

我需要撤消rev 4中的更改,但之后重新应用所有其他更改.基本上撤消提交#4.我怎样才能做到这一点?

Jim*_*lla 40

你想要hg退出

恢复/撤消早期变更集的效果......

回退通过应用与要撤消的变更集相反的变更集来工作.新的变更集将提交到存储库,并最终合并......

  • `hg backout -r 4`将反转修订版4中所做的更改,而不会触及修订版5和6中所做的更改.帮助系统提供了一个很好的概述(http://www.selenic.com/hg/help/backout ). (3认同)
  • 退出工作.这是我使用的命令:hg backout --merge -r 4 - parent 3 (2认同)

man*_*lds 5

您可以使用MQ扩展:

hg qinit
hg qimport -r 4:tip
hg qpop -a
hg qdelete 4.diff
hg qpush -a
hg qfinish -a
Run Code Online (Sandbox Code Playgroud)

以上就是你如何重写历史,这就是你想要的.

您也可以使用hg backout但撤消工作目录中的提交,然后您可以提交.

  • 这就是我要做的事情*当且仅当*我知道我的存储库的变更集最后一次与其他人共享时是变更集3或更早版本.否则,当您在变更集4,5和6中引入相同更改的新版本时,您会遇到令人讨厌的小合并问题. (2认同)