2010-01-18 75 views
7

假设我克隆远程Mercurial存储库(通过本地网络甚至通过Internet)尝试一些东西。
我在克隆工作,做了一些提交...然后我意识到我的更改没有意义,我必须重新开始。将Mercurial存储库“重置”到版本X(无需克隆)的最快方法

因此,我想再次从同一个源代码库获得“新鲜”克隆。
基本上,我想我的本地回购“复位”到前点,我开始尝试。

什么是做到这一点的最好/最快的方法是什么?

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

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

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

任何想法?
真的没有别的办法可以再次克隆整个事情吗?
(注:与TortoiseHg的解决方案将是不错...我喜欢这种通过命令行)

回答

17

根据gizmo的建议,您将使用hg strip结束我们,但传统方法是再次克隆 - 而不是从远程回购,但从您自己的本地回购。例如,如果您签是“仓库”,你已经添加的变更99和100,你不喜欢,你会怎么做:

cd .. 
hg clone -r 98 respository repository-scrubbed 
mv repository respository-with-crap-I-do-not-want 
mv repository-scrubbed repository 

这应该是几乎瞬时的。

1

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

+2

这实际上并没有使系统回滚到与克隆时相同的状态 - 你仍然有提交,因为'昨天' – 2010-01-18 15:53:29

8

如果启用Mq Extension,则可以使用“hg strip”命令删除不再需要的历史记录。
欲了解更多信息,请访问Strip command wiki页面。

+0

这为我工作 – 2014-02-21 12:03:10