如何从历史记录中永久删除(删除)文件?

ami*_*che 5 mercurial

COMMITED (未按下)很多文件在本地(包括二进制文件删除和添加...),现在当我试图推动它需要大量的时间.其实我搞砸了我当地的回购历史.

我怎么能在将来避免这个错误?我可以将一组本地修订版1-> 2-> 3-> 4转换1-> 2,其中2是本地克隆的最终修订版本?

编辑:因为我很着急,我从头开始用修订版4开始一个新的远程仓库.将来我会选择明显的答案,因为它似乎更容易,但我会挖掘其他解决方案来查看真相.谢谢您的支持.

Ry4*_*ase 1

Mercurial 历史记录是不可变的,您无法使用普通工具删除。但是,您可以创建一个没有这些文件的新存储库:

$ hg clone -r 1 repo-with-too-much new-repo
Run Code Online (Sandbox Code Playgroud)

这只需要旧存储库中的修订版零和一,并将它们放入新的存储库中。现在将修订版四中的文件复制到新的存储库中并提交。

这消除了那些间质性变更集,但是您在野外拥有的任何存储库仍然拥有它们,因此当您pull将它们找回来时。

一般来说,一旦你推送了一个变更集,它就在那里,除非你能让每个拥有克隆的人删除它并重新克隆,否则你就不走运了。