gpt4 book ai didi

mercurial - TortoiseHG:无法部分提交 merge

转载 作者:行者123 更新时间:2023-12-02 19:31:16 25 4
gpt4 key购买 nike

我尝试在 Mercurial 中 merge 两个头。 merge 后,我没有提交,又做了一些更改。然后我尝试提交并收到以下消息:

abort: cannot partially commit a merge (do not specify files or patterns)

我使用 TortoiseHG 作为视觉外壳,并使用 Beyond Compare 进行比较和 merge 。我对所有这些都比较陌生。

我应该怎样做才能成功完成提交?

最佳答案

Mercurial/TortoiseHg 正确地告诉您不应部分提交 merge 。部分意味着您不会一次提交所有文件。

此消息的根本原因是它给您提供了错误的结果。当您在 Mercurial 中 merge 两个变更集时,您将创建一个包含两个父变更集的新变更集。此 merge 变更集向其他人展示了您希望其他人如何组合这两个变更集。

让我们假设您从变更集 AB 开始,并且想要 merge 它们。这将创建一个如下图:

... --- [A]
\
[M]
/
... --- [B]

假设我们将行 A! 添加到 A 变更集中的 a.txt 中,并添加了 B!B 变更集中的 b.txt。只是两个不冲突的独立更改。如果 Mercurial 允许您进行部分提交,那么您可以这样做:

hg merge
hg commit -m 'Added A!' a.txt # creates M
hg commit -m 'Added B!' b.txt # creates M'

结果如下图:

... --- [A]           \            [M] --- [M']           /... --- [B]

如果你沿着路径BMM'查看b.txt,那么你将看到带有 B! 的行在 B 中引入,M 中删除并在 中重新引入M'!

这不是您想要的 merge 变更集:部分 merge 会丢弃一个分支中的更改,只是为了在后续提交中再次引入它们。当您创建 M 时,Mercurial 会信任您:它确实相信 M 包含 AB 的正确组合。特别是,如果 M 中的 B! 行被删除,那么当您将 M 与其他变更集 merge 时,它仍然会消失。

因此,Mercurial 试图通过不允许部分 merge 来保护您免于创建不良历史记录。

关于mercurial - TortoiseHG:无法部分提交 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3364060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com