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

时间:2015-02-03 03:47:33

标签: mercurial atlassian-sourcetree

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

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

已完成但有错误,请参见上文。

2 个答案:

答案 0 :(得分:3)

如果你知道它的含义,错误信息会告诉你需要知道的一切。

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

基本上,是否可供其他人使用/共享?然后是公开的。

" - 修改" commit命令的参数专门用于编辑上一个变更集,以避免其上的另一个变更集。

"的典型用例 - 修改"参数是:

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

但是,您无法修改公共变更集,因为这很可能不是您想要做的。你可以通过强制有问题的变更集进入草稿阶段来做到这一点,但既然你真的不想这样做,我也不会发布命令这里。

如果要修改公共变更集,问题在于它会在本地重写变更集。变更集仍然存在"在那里" (在公共场合)作为旧版本,没有经过修改的更改。因此,下次拉动你将获得原始变更集。

修改前的示例历史记录(所有变更集都是公开的):

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

然后您决定要修改D变更集,获取d

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

下次你拉你的时候得到这个:

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

现在您拥有原始和修改后的变更集。如果不是拉你试图拉,你会得到错误信息,说明你正试图在远程存储库中创建另一个头。

这些都不是您想要做的,因为您不应该修改公共变更集。这是错误消息告诉你的内容。

答案 1 :(得分:2)

这回答了接受答案的评论中的问题: “我怎么能在Sourcetree中做到这一点?”

我认为你提交“修改最新提交”选项 enter image description here

有点隐藏:)