源树提交尝试失败,无法修改 public 变更集错误

Source tree commit attempt fails with cannot amend public changesets error

为了学习源代码树,我在 bitbucket 中设置了一个私有存储库,并在我的计算机上克隆了 2 个。 当我尝试从其中一个克隆提交时,出现以下错误。

hg commit -y --amend --logfile C:\Users\kirsten\AppData\Local\Temp\n1j0esve.5ce 中止:无法修改 public 变更集

完成但有错误,见上文。

错误消息会告诉您所有需要知道的信息,前提是您知道它的含义。

"public" 变更集是您从另一个存储库中拉取或推送到另一个存储库(或强行切换到 public 阶段,但这不是典型原因)的变更集。

基本上,它 available/shared 是给其他人的吗?那么就是public.

commit命令的“--amend”参数专门用于编辑之前的变更集,以避免在其之上出现另一个变更集。

“--amend”参数的典型用例是:

  • 提交前忘记删除密码或调试代码
  • 忘记在您的编辑器中保存文件,以至于您在其中所做的更改不在磁盘上,因此未包含在变更集中。

但是,您不能修改 public 变更集,因为这很可能不是您想做的。您 可以 通过强制有问题的变更集进入草稿阶段来做到这一点,但是由于您真的不想这样做,所以我不会 post此处的命令。

如果您要修改 public 变更集,问题在于它会在本地重写变更集。变更集仍然存在 "out there"(在 public 中)作为旧版本,没有您修改的变更。所以下次你拉你会得到原来的变更集。

修改前的示例历史记录(所有变更集均为 public):

A---B---C---D

然后您决定修改 D 变更集,得到 d:

A---B---C---d

下次你拉你会得到这个:

           D
          /
         /
A---B---C
         \
          \
           d

现在您拥有原始变更集和修改后的变更集。如果您尝试拉取而不是拉取,则会收到错误消息,指出您正在尝试在远程存储库中创建另一个头。

None 这是你想要做的 因为你不应该修改 public 变更集 。这就是错误消息告诉你的内容。

这回答了已接受答案的评论中的问题: "how could i have done that in Sourcetree ?"

我认为您使用选项“修改最新提交”进行提交

有点隐藏:)