【问题标题】:Why need to strip changes from default branch while pushing that changes from another branch为什么需要从默认分支中删除更改,同时从另一个分支推送更改
【发布时间】:2017-08-02 07:50:15
【问题描述】:

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

只有那些父级与我创建分支的哈希值相同的草稿才会被推送。

例如 可以说,我在 default 中有公共更改 A 。 默认情况下,我在 A 上创建了我的草稿 B 然后我在默认情况下在 A 上创建了我的草稿 C。意味着 C 和 B 都有 A 是父级。 我从默认中提取了最新代码。现在 D 是最新公开的。 我从 D 创建了我的分支,并在 D 上重新建立了 B。 然后导出 B. 并导入我的分支。 我已经从我的分支推了 B。推它时,我只看到了一张 B 稿。

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

请帮我解决这个问题

Logs

【问题讨论】:

  • 请添加您所谈论内容的示例日志 -G 输出(包括阶段信息)...这样会更容易理解
  • 我已将图片附加到问题

标签: ubuntu mercurial tortoisehg


【解决方案1】:

在 Mercurial 中,当您推送时,默认情况下会推送存储库树的整个结构。如果这会在远程存储库的分支中创建一个新的头,Mercurial 将中止推送,除非指定了hg push --force。 (建议不要无故强行推送,因为一个分支上有多个head可能会造成混乱。)

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

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

【讨论】:

    猜你喜欢
    • 2015-01-01
    • 2021-12-26
    • 2023-03-31
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 2023-01-03
    相关资源
    最近更新 更多