Mercurial hg致力于创建新的分支机构

Mercurial hg致力于创建新的分支机构,mercurial,mercurial-commit,mercurial-amend,Mercurial,Mercurial Commit,Mercurial Amend,在尝试使用“hg commit--amend”功能更改repo中的提交消息时 我已经创建了名为“hg_amend”的新分支机构,并承诺进行一些更改并推动回购。同样,我需要对之前的提交进行一些更改。所以我做了一些修改&尝试使用“hgadd”、“hgcommit--amend”、“hgpase--draft--force”和“hgpush-f”添加这些文件 在这之后,我签入了bitbucket,创建了具有相同头的新分支 提前谢谢 虽然你的问题中没有实际问题,但我会回答这两个问题: 为什么有两个头

在尝试使用“hg commit--amend”功能更改repo中的提交消息时

我已经创建了名为“hg_amend”的新分支机构,并承诺进行一些更改并推动回购。同样,我需要对之前的提交进行一些更改。所以我做了一些修改&尝试使用“hgadd”、“hgcommit--amend”、“hgpase--draft--force”和“hgpush-f”添加这些文件

在这之后,我签入了bitbucket,创建了具有相同头的新分支

提前谢谢


虽然你的问题中没有实际问题,但我会回答这两个问题:

  • 为什么有两个头

  • 如何才能改变这种情况,使只有一个人头

  • 1)的答案很简单:您发布了变更集。您的bitbucket存储库被配置为发布存储库(这是默认设置),因此推送到那里的所有变更集在bitbucket回购和本地回购中都是不可变的,因此是公共阶段。您不能更改已推送到该存储库的任何变更集。使用
    hg push--force
    只能确保您实际上可以将新的头推到回购协议中,并且您愿意对尝试推新头时通常收到的警告说“再见”。使用mercurial,push命令是严格的仅附加的(与git不同,在git中,当强制执行错误的提交时,它可能是一条通往地块重建工作的道路)

    现在答案更难了,有几种选择。可能最简单的方法是使用bitbucket接口,剥离您在上次提交时推送的所有变更集,以及您试图修改的变更集。然后再试一次。现在应该可以解决了

    我不能100%确定bitbucket当前的功能。我听说它(仍然)不支持交换过时标记,因此这种情况很难避免。但是,它允许将存储库设置为非发布,并且支持阶段。因此,如果您的默认阶段也是draft,则推送时不会更改阶段。或者避免修改已经推送的变更集。或者你用原来的changesetID修改并关闭现在已经过时的head,那么它至少不会再显示在bitbucket中了