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

发布于 2024-08-18 05:16:10 字数 522 浏览 5 评论 0原文

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

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

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

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

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

我可以“hg rollback”,但这只会回滚最后一次提交。如果我进行了多次提交,我只能撤消最后一次。所以我无法将存储库重置为开始提交之前的位置。

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

Let's say I clone a remote Mercurial repository (over the local network or even over the Internet) to try something out.
I work in my clone, make a few commits...and then I realize that my changes don't make sense and I have to start over again.

So I want to have a "fresh" clone again, from the same source repository.
Basically, I want to "reset" my local repo to the point before I started experimenting.

What's the best / fastest way to do this?

The simplest way would be to just make a new clone, but then HG copies the whole repo and the whole history over the network again.
If the repo is really big, this will take some time and/or block the network.

I tried to make a new clone into the same folder (hoping that HG would recognize this and update only the files which have changed and the history) but that seems to copy the whole repo as well.

I could "hg rollback", but this rollbacks only the last commit. If I made several commits, I can only undo the last one. So I can't reset the repo to the point before I started committing.

Any ideas?
Is there really no other way than to clone the whole thing again?
(note: a solution with TortoiseHg would be nice...I prefer this over the command line)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

小姐丶请自重 2024-08-25 05:16:10

正如 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

这应该接近瞬时。

You'll end us using hg strip as gizmo suggests, but the traditional way to do this would be to clone again -- not from the remote repo, but from your own local repo. For example, if you checkout is 'repository' and you've added changesets 99 and 100 that you don't like you'd do:

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

That should be near instantaneous.

在梵高的星空下 2024-08-25 05:16:10

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

有关详细信息,请访问 Strip 命令 wiki 页面。

If you enable the Strip Extension, you can use the "hg strip" command that will remove the history you don't want anymore.

More information is available on the Strip command wiki page.

陌生 2024-08-25 05:16:10

hg update -r <变更集编号>
例如第二个版本的hg update -r 1。您可以使用hg log查看您想要的版本

hg update -r <changeset number>
eg hg update -r 1 for the second version. You can use hg log to see what version you want

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文