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

时间:2010-01-18 12:00:18

标签: version-control mercurial tortoisehg

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

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

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

最简单的方法是制作一个新的克隆,然后HG再次通过网络复制整个回购和整个历史记录。
如果回购真的很大,这将需要一些时间和/或阻止网络。

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

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

任何想法?
真的没有其他方法可以再次克隆整个事物了吗? (注意:使用TortoiseHg的解决方案会很好......我更喜欢使用命令行)

3 个答案:

答案 0 :(得分:18)

你会像Gizmo建议的那样使用hg strip结束我们,但传统的做法是再次克隆 - 不是来自远程仓库,而是来自你自己的本地仓库。例如,如果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

那应该是即时的。

答案 1 :(得分:8)

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

Strip command维基页面提供了更多信息。

答案 2 :(得分:1)

hg update -r <changeset number> 例如hg update -r 1表示第二个版本。您可以使用hg log查看您想要的版本