Mercurial如何回滚到一个标签?

标签 mercurial dvcs

我对如何回滚到 Mercurial 中的标签有点困惑。 (我对此很陌生)
假设我有一个名为“Version-1.0”的标签,它是几个版本前的版本。假设我们现在在 r400
现在,如果我的经理告诉我,他们不喜欢事情的发展方向,并且基本上想抛弃自那个标签以来的一切,回到 1.0 版。
好吧,我可以使用以下方法 checkout 该标签:

hg update -r Version-1.0


好的,现在我回到了 1.0 版标签,如果我永远不需要进行更改,那就没问题了。但是,一旦我做出更改并提交,我现在就有 2 个头(我对 Version-1.0 和 r400 的新更改是经理想要放弃的东西)。
所以现在我需要与 r400 merge 。我不想。 (我真的不想从地球上抹去所有这些变化,我希望它们留在我的历史中,这样如果管理层再次改变主意,我可以稍后再回到它们)但我目前不想要它们中的任何一个.
我该怎么办?

更新
一个回答说:

You could clone the entire repository up until the tag, then use that clone as your "new" central repository.


如果我的中央存储库由 bitbucket 托管,我不确定如何执行此操作。如果当前地址在 URL https://jisaacks@bitbucket.org/jisaacks/hgml我想将它克隆到标签到一个名为 hgml2 的新仓库中(尚不存在)我在我的机器上本地尝试了这个命令:
hg clone -r Version-1.0 https://jisaacks@bitbucket.org/jisaacks/hgml https://jisaacks@bitbucket.org/jisaacks/hgml2
我收到此错误:

abort: cannot create a new http repository

最佳答案

登录到 bitbucket 并单击右上角的“叉”箭头图标。现在您可以打开“高级设置”以从标签 fork 。

然后,您可以将第一个存储库重命名为“myproject-abandoned-foo-changes”,并为 fork 存储库重用原始名称,您将在其中继续开发。

编辑 : 你也可以做一个 no-op merge .链接的维基页面解释说这可能很糟糕,因为您的历史记录会被不需要的更改污染,但我认为在您的情况下,这可能正是您想要的,因为它会保留您的更改,同时避免“将所有内容切换到新的 repo “你提示的问题。

关于Mercurial如何回滚到一个标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4671332/

相关文章:

configuration - Mercurial 编辑器 : "abort: The system cannot find the file specified"

具有复杂项目结构的 Git/Hg 存储库

merge - Mercurial : Find out if a branch has been merged in to default?

git - gitignore和hgignore的相互转换?

version-control - 能否/应该避免频繁 merge (例如通过 rebase )?

git - 用于启动商业多平台电话应用程序的 DCVS + 托管

Git 将功能分支的历史更改为新分支?

mercurial - 如何在使用 TortoiseHg 时启用 Mercurial 推/拉操作的身份验证?

mercurial - Mercurial 拉vs.更新到分支提示

Mercurial 分支分支不会在 hg serve 或 hg View 中正确显示