即使状态被强制更改为公共状态,我仍然可以合并并推送到存储库吗?

时间:2015-05-28 06:08:57

标签: merge mercurial

所以,我是Mercurial的新手,在我第一次尝试的时候,我搞砸了。

在推送我的数据之前,我尝试合并一个分支(我认为这是一个旧分支)

而不是正确推动它改变"草案"公共"公共"我通过使用" draft"的更改阶段从Tortoise手动更改了它。公共"

我认为这意味着它将被放置在存储库中,但当我去实际的存储库(在Bit Bucket上)时,我无法找到它。

所以发生了什么事,我想我从来没有推过。

这引起了我进行新更改的问题,因为当我尝试提交其他文件,将其与其他分支合并并将其推送到存储库时,我收到错误:

searching for changes
remote has heads on branch 'branch one' that are not known locally: 62bf86f93d4f
abort: push creates new remote head 7edef5d2e2e5 on branch 'branch one'!
hint: pull and merge or see "hg help push" for details about pushing new heads
[command returned code 255 Thu May 27 14:43:44 2015]

所以我认为解决方案是与原始草案(现在是公开的)合并

因此,我的问题是:是否仍然可以合并并推送已被视为" public"的修订版,即使我无法在bitbucket上的存储库中找到它?

1 个答案:

答案 0 :(得分:1)

您的提交阶段(公开与草稿与秘密)与是否可以合并提交无关。草稿和公共之间的区别仅影响是否可以更改涉及提交的历史记录(例如,通过hg commit --amendhg rebase)。公共修订被认为是不可改变的,修订草案仍然可以改变。

你仍然可以合并推送。从理论上讲,如果你坚持认为你没有推动提交,你也可以安全地将阶段改回草案。然而,这将是毫无意义的[1],因为推动合并将立即再次公开[2]。

[1]如果你使用hg pull --rebase会很有用,但如果你不知道那是什么,你可能不应该使用它。

[2]除非您推送到非发布存储库,但除非您的组使用evolve扩展,否则这种情况不太可能。如果您不知道非发布存储库或evolve扩展是什么,则无需知道。