将Mercurial存储库"重置"到版本X的最快方法(无需克隆)

Chr*_*cht 8 version-control mercurial tortoisehg

假设我克隆了一个远程Mercurial存储库(通过本地网络甚至通过Internet)来尝试一些东西.
我在我的克隆中工作,做了一些提交......然后我意识到我的改变没有意义,我必须重新开始.

所以我希望从同一个源库中再次获得一个"新鲜"的克隆.
基本上,我想在我开始试验之前"重置"我的本地回购.

最好/最快的方法是什么?

最简单的方法是创建一个新的克隆,然后HG再次通过网络复制整个repo和整个历史记录.
如果回购非常大,这将花费一些时间和/或阻止网络.

我试图在同一个文件夹中创建一个新的克隆(希望HG能识别这个并只更新已更改的文件和历史记录),但这似乎也复制了整个repo.

我可以"hg rollback",但这只回滚了最后一次提交.如果我做了几次提交,我只能撤消最后一次提交.因此,在开始提交之前,我无法将回购重置为重置点.

有任何想法吗?
除了再次克隆整个事物之外,真的没别的办法吗?
(注意:使用TortoiseHg的解决方案会很好......我更喜欢这个命令行)

Ry4*_*ase 18

你会hg strip像Gizmo建议的那样结束我们,但传统的做法是再次克隆 - 不是来自远程仓库,而是来自你自己的本地仓库.例如,如果checkout是'repository',并且您添加了您不喜欢的更改集99和100:

cd ..
hg clone -r 98 respository repository-scrubbed
mv repository respository-with-crap-I-do-not-want
mv repository-scrubbed repository
Run Code Online (Sandbox Code Playgroud)

那应该是近乎瞬间的.


giz*_*zmo 8

如果启用Strip Extension,则可以使用"hg strip"命令删除不再需要的历史记录.

Strip命令 wiki页面上提供了更多信息.