为什么需要从默认分支中删除更改,同时从另一个分支推送更改

时间:2017-08-02 07:50:15

标签: ubuntu mercurial tortoisehg

我在默认分支中进行了更改并创建了一个补丁。然后我从默认创建了自己的分支。我从默认导出更改补丁并将其导入我自己的分支。在ubuntu中使用tortoise hg工具从我的分支推送更改时,它只显示我从默认导入的更改。但是当我从我的分支推送更改时,默认分支中的所有草稿也会被推送。为什么会这样呢?

只推送那些父母与我创建分支的哈希相同的草稿。

例如 比方说,我默认公开更改A. 我默认在A上创建了草稿B. 然后我在默认情况下在A上创建了我的草稿C.Means C和B都有A是父级。 我从默认中提取了最新的代码。现在D是最新公​​开的。 我从D创建了我的分支,并在D上重新创建了B。 然后导出B.并导入我的分支。 我把B推到了我的分店。虽然推动它只显示了一个B草案。

问题是C草案默认也被推送。

请帮我解决这个问题

Logs

1 个答案:

答案 0 :(得分:0)

在Mercurial中,当您推送时,默认情况下会推送存储库树的整个结构。如果这将在远程存储库的分支中创建新头,Mercurial将中止推送,除非指定hg push --force。 (建议不要在没有充分理由的情况下强行推动,因为分支上的多个头可能会引起混淆。)

如果您有TortoiseHg,则可以通过在过滤器框中键入draft()并按Enter来显示草稿状态中的修订。 (如果没有看到,请单击“Filter”图标。)在命令行中,您可以使用命令hg log --rev draft()显示相同内容。

要推送特定修订版及其后代,可以使用命令hg push --rev RevisionNumberOrHash(例如hg push --rev 123)。或者,您可以将不需要的修订标记为机密。为此,请使用命令hg phase --rev RevisionNumberOrHash --secret --force;在TortoiseHg中,右键单击修订版并选择“将阶段更改为” - > “秘密”。除非您专门选择推送,否则不会推送秘密修订,或者除非您将其更改回草稿状态。 (重要的是:如果修订是秘密的,那么它的后代也是如此。)