Rom*_*iko 11 merge mercurial dvcs tortoisehg
我试图在Mercurial中合并两个头.合并后,我没有提交并做了一些更改.然后我尝试提交并收到以下消息:
abort:无法部分提交合并(不指定文件或模式)
我使用TortoiseHG作为视觉外壳,使用Beyond Compare进行比较和合并.我对他们所有人都相对较新.
我该怎么做才能成功完成提交?
Mar*_*ler 13
Mercurial/TortoiseHg告诉您不应该部分提交合并.部分表示您不会一次提交所有文件.
此消息的根本原因是,它会给您错误的结果.在Mercurial中合并两个更改集时,您将创建一个包含两个父更改集的新更改集.此合并更改集向其他人显示您希望其他人如何组合这两个更改集.
让我们想象一下,你开始的变更A和B,并希望合并.这会创建一个如下图形:
... --- [A]
\
[M]
/
... --- [B]
Run Code Online (Sandbox Code Playgroud)
假装我们增加了行A!以a.txt在A变更和我们添加B!到b.txt的B变更.只是两个不冲突的独立变化.如果Mercurial允许您进行部分提交,那么您可以这样做:
hg merge
hg commit -m 'Added A!' a.txt # creates M
hg commit -m 'Added B!' b.txt # creates M'
Run Code Online (Sandbox Code Playgroud)
结果是这个图:
... --- [A]
\
[M] --- [M']
/
... --- [B]
如果你看一下b.txt沿着路径B,M,M',然后你会看到,随着线B!被引入B,在取出M和重新M'!
这不是您想要的合并变更集:部分合并会从一个分支中抛弃更改,只是为了在后续提交中再次引入它们.当你创建水银信任你M:它真的认为,M包含的正确组合A和B.特别是,如果B!删除该行M,则在M与其他更改集合并时它将保持不变.
因此,Mercurial试图通过不允许部分合并来保护您免于创建糟糕的历史记录.
小智 7
我认为你在hgrc文件中有别名.尝试删除[alias]部分并再次提交.
我应该怎么做才能成功完成提交?
Mercurial(或 git 或任何其他DVCS )的好处之一是,您可以在开发过程中的任何时候执行提交,并且它既快速又私密。它会很快,因为您应该提交驻留在硬盘驱动器上的存储库的本地副本,并且它将是私有的,因为在您将它们推送到服务器(或其他主存储库)之前没有人会看到您的更改集。
因此,为了部分回答您的问题,适当的做法是在不进行其他更改的情况下提交合并,然后应用并提交下一波更改。如果您使用 TortoiseHG 执行合并,它实际上会提示您在离开 GUI 之前提交合并,因为这是预期的 HG 工作流程。
话虽这么说,我对命名分支(即:新头)进行了一些更改,将其合并回默认分支,退出 TortoiseHG GUI 而不提交,进行了更多更改,然后毫无问题地提交。我将在您最初的询问下面提出一些澄清问题。
| 归档时间: |
|
| 查看次数: |
7747 次 |
| 最近记录: |