1

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

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

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

提前谢谢!!

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

1

虽然您的问题没有实际问题,但我会假设这两个:

  1. 为什么有两个头?

  2. 怎样才能改变局面,让只有一个人头呢?

1) 的答案很简单:您发布了变更集。您的 bitbucket 存储库被配置为发布存储库(这是默认设置),因此推送到那里的所有变更集都变得不可变,因此是公共阶段,无论是在 bitbucket 存储库中还是在您的本地存储库中。您无法更改已推送到该存储库的任何变更集。使用hg push --forceonly 可确保您实际上可以将新头推送到 repo,并且您愿意对尝试推送新头时通常收到的警告说“再见”。使用 mercurial,push 命令是严格只追加的(与 git 不同,它可以成为强制错误提交时进行大量重建工作的途径)。

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

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

于 2015-09-17T14:13:16.393 回答