hg commit修改创建新分支

时间:2015-09-17 12:57:45

标签: mercurial branch commit amend

尝试使用'hg commit --amend'功能更改repo中的提交消息...

我创建了一个名为'hg_amend'的新分支,我已经提交了一些更改并推送到repo。我再次需要做一些与之前提交相关的更改。所以我做了一些改变&试图使用'hg add','hg commit --amend','hg phase --draft --force'添加这些文件。和'hg push -f'。

在此之后我检查了bitbucket,新分支创建了相同的头。

提前谢谢!!

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

虽然你的问题没有实际问题,但我会认为这两个问题:

  1. 为什么有两个脑袋?

  2. 如何改变这种情况,只有一个头?

  3. 1)的答案很简单:您发布了变更集。您的bitbucket存储库配置为发布存储库(默认情况下),因此在那里推送的所有更改集都变得不可变,因此公共阶段,无论是在bitbucket repo还是在本地存储库中。您无法更改已推送到该存储库的任何更改集。使用hg push --force只能确保你实际上可以将新头推向回购,并且你愿意对你在尝试推动新头时通常会得到的警告说“再见”。使用mercurial,push命令是严格附加的(与git不同,在强制错误提交时,它可以成为批次重建工作的道路)。

    2)的答案现在更加困难,有几种选择。可能最简单的方法是使用bitbucket接口并删除您在上次提交时推送的所有更改集,以及您尝试修改的更改集。然后再试一次。这应该暂时解决。

    我不是百分百肯定bitbucket的当前功能。我听说它(仍然)不支持交换过时标记,因此这种情况很难避免。但是,它允许将存储库设置为非发布,并且它支持阶段。因此,如果您的默认阶段也是草稿,那么在推送时不会更改阶段。您要么避免修改已经推送的变更集。或者您使用原始的changesetID修改并关闭现在过时的头部 - 然后它至少应该不再显示在bitbucket中。