8

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

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

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

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

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

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

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

4

3 回答 3

18

您将hg strip按照 gizmo 的建议结束我们的使用,但执行此操作的传统方法是再次克隆 - 不是从远程存储库,而是从您自己的本地存储库。例如,如果您 checkout 是“存储库”并且您添加了您不喜欢的变更集 99 和 100:

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

这应该几乎是瞬时的。

于 2010-01-18T16:19:09.097 回答
8

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

更多信息可在Strip 命令wiki 页面上找到。

于 2010-01-18T14:22:37.097 回答
1

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

于 2010-01-18T12:04:33.707 回答