我对如何回滚到Mercurial中的标记感到有些困惑。 (我很新)
假设我有一个名为“Version-1.0”的标签,这是几个修订版。让我们说我们现在在r400
现在,如果我的经理要告诉我他们不喜欢事情的发展方向,并且基本上想要从那个标签上抛弃所有内容并返回到1.0版本。
我可以通过以下方式结帐该标签:
hg update -r Version-1.0
好的,现在我回到版本1.0标签,如果我永远不需要进行更改,那就没关系了。但是,只要我进行更改并提交,我现在有2个头(我对版本1.0的新更改和r400管理者想要抛弃的东西)。
所以现在我需要与r400合并。我不想。 (我真的不想消除地球上所有这些变化,我希望它们留在我的历史中,以便如果管理层再次改变主意我可以回到他们身边)但我现在不想要他们中的任何一个
我该怎么办?
答案说明:
您可以将整个存储库克隆到标记,然后将该克隆用作“新”中央存储库。
如果我的中央存储库由bitbucket托管,我不知道如何做到这一点。如果当前的URL位于URL https://jisaacks@bitbucket.org/jisaacks/hgml
,并且我想将其克隆到标记为新的名为hgml2
的仓库(尚不存在),我在我的机器上本地尝试了此命令: / p>
hg clone -r Version-1.0 https://jisaacks@bitbucket.org/jisaacks/hgml https://jisaacks@bitbucket.org/jisaacks/hgml2
我收到此错误:
abort:无法创建新的http存储库
答案 0 :(得分:3)
登录bitbucket并单击右上角的“Fork”箭头图标。现在,您可以打开“高级设置”以从标记中分叉。
然后,您可以将第一个存储库重命名为“myproject-abandoned-foo-changes”,并重用分叉存储库的原始名称,然后继续开发。
修改:您还可以执行no-op merge。链接的维基页面解释说这可能不好,因为您的历史记录会被不必要的更改所污染,但我认为在您的情况下,这可能正是您想要的,因为它会保留您的更改,同时避免“将所有内容切换到新的回购” “你抱怨的问题。
答案 1 :(得分:1)
在现代Mercurial中执行此操作的“正确”方法是关闭分支:
hg up head-i-dont-like
hg commit --close-branch
虽然这最初被添加到关闭的命名分支,但它与匿名分支(OP具有的)同样有效。特别是,只会影响它所提交的头部,而不会影响同一命名分支上的任何其他头部。
答案 2 :(得分:0)
您可以使用hg revert
。以下命令将存储库还原到某个标记,并丢弃所有本地更改。
hg revert -r tagname --all