Merge HG合并:未完成的未限制更改

Merge HG合并:未完成的未限制更改,merge,mercurial,Merge,Mercurial,我有一个文件,version.txt和其他文件。我更改了其他文件,但没有触摸version.txt 所以,我尝试推送一个提交,发现了一个远程头错误。(有一个修改versions.txt文件的变更集) 我做了一个hg拉,然后hg更新 错误是:abort:交叉分支(合并分支或使用--clean放弃更改) 然后我尝试了hg merge:中止:未提交的更改(使用“hg status”列出更改) 但是我不明白,为什么如果versions.txt没有被我修改,为什么不能合并呢 这是我将要做的很多事情,即开发

我有一个文件,version.txt和其他文件。我更改了其他文件,但没有触摸version.txt

所以,我尝试推送一个提交,发现了一个远程头错误。(有一个修改
versions.txt
文件的变更集)

我做了一个
hg拉
,然后
hg更新

错误是:
abort:交叉分支(合并分支或使用--clean放弃更改)

然后我尝试了
hg merge
中止:未提交的更改(使用“hg status”列出更改)

但是我不明白,为什么如果versions.txt没有被我修改,为什么不能合并呢

这是我将要做的很多事情,即开发和合并,以保持与主开发报告的内联。我怎样才能修理这个东西

汞状态:

M printbox/web/printbox/controllers/ct_adm_colas.php
M printbox/web/printbox/controllers/ct_adm_jobs.php
M printbox/web/printbox/controllers/ct_form_configurar_cola.php
M printbox/web/printbox/core/MY_Controller.php
M printbox/web/printbox/css/estilos.css
M printbox/web/printbox/js/js_tablas_colas-jobs_ajax.js
M printbox/web/printbox/models/md_cola.php
M printbox/web/printbox/models/md_job.php
M printbox/web/printbox/views/vw_tabla_colas.php
M printbox/web/printbox/views/vw_tabla_jobs.php
A printbox/web/printbox/core/MY_Model.php
? .idea/.name
? .idea/encodings.xml
? .idea/misc.xml
? .idea/modules.xml
? .idea/printboxweb.iml
? .idea/scopes/scope_settings.xml
? .idea/vcs.xml
? .idea/workspace.xml
EIDT:在执行建议的修复之前和之后,图形日志如下所示:

o  changeset:   19:e21fa7b131b0
|  tag:         tip
|  parent:      17:54f59f253460
|  user:        JCV
|  date:        Tue Apr 22 12:33:36 2014 -0300
|  summary:     # Modificar nombre de producto para version
|
| @  changeset:   18:a03eaad764cd
|/   user:        Jorge S <js@fusiondev.com.ar>
|    date:        Wed Apr 23 16:28:01 2014 -0300
|    summary:     Eliminar método que no se utiliza.
|
o  changeset:   17:54f59f253460
|  user:        Jorge S <js@fusiondev.com.ar>
|  date:        Mon Apr 21 17:25:23 2014 -0300
|  summary:     Incluir SWHelper en Printbox.php
|


@    changeset:   21:1698791a9310
|\   tag:         tip
| |  parent:      20:3bfa1251da1b
| |  parent:      19:e21fa7b131b0
| |  user:        Jorge S <js@fusiondev.c
| |  date:        Thu Apr 24 13:59:25 2014 -0300
| |  summary:     Merge
| |
| o  changeset:   20:3bfa1251da1b
| |  parent:      18:a03eaad764cd
| |  user:        Jorge S <js@fusiondev.c
| |  date:        Thu Apr 24 13:57:23 2014 -0300
| |  summary:     Commit de archivos
| |
o |  changeset:   19:e21fa7b131b0
| |  parent:      17:54f59f253460
| |  user:        JCV
| |  date:        Tue Apr 22 12:33:36 2014 -0300
| |  summary:     # Modificar nombre de producto 
| |
| o  changeset:   18:a03eaad764cd
|/   user:        Jorge S <js@fusiondev.c
|    date:        Wed Apr 23 16:28:01 2014 -0300
|    summary:     Eliminar método que no se utili
|
o  changeset:   17:54f59f253460
|  user:        Jorge S <js@fusiondev.com
|  date:        Mon Apr 21 17:25:23 2014 -0300
|  summary:     Incluir SWHelper en Printbox.php
o变更集:19:e21fa7b131b0
|标签:提示
|家长:17:54f59f253460
|用户:JCV
|日期:2014年4月22日星期二12:33:36-0300
|小结:#修改产品名称至段落版本
|
|@changeset:18:a03eaad764cd
|/用户:豪尔赫S
|日期:2014年4月23日星期三16:28:01-0300
|小结:Eliminar método que no se utiliza。
|
o变更集:17:54f59f253460
|用户:豪尔赫S
|日期:2014年4月21日星期一17:25:23-0300
|摘要:Incluir SWHelper en Printbox.php
|
@变更集:21:1698791a9310
|\标签:提示
||家长:20:3bfa1251da1b
||家长:19:e21fa7b131b0

||用户:Jorge S好的,忘了
version.txt
,这里不相关。您有两个回购,一个在您的系统上,另一个在远程

当您尝试第一次推送时,您尝试在远程回购上发送变更集,并且您收到一个错误,提示您无法推送第二个磁头,除非您发出
--force
选项。这是因为其他人已经击败了您,并在同一分支上推送了一个变更集(修改
version.txt
)(您称之为主线,实际上也是一个分支,它可能被称为默认值

你接下来做的很好,你从远程回购中提取了更改以解决2头问题。这样做,你就是那个在默认值上有两个头的人。这很好,很容易解决,我们很快就会解决

您当前的状态必须如下所示

% hg log --graph
o  changeset:   14:3cfac6413110
|  tag:         tip
|  parent:      10:d573f47ecc2d
|  summary:     vb
|
| @  changeset:   13:d8edfdb0532e
|/   parent:      10:d573f47ecc2d
|    summary:     commit to subr2
|
现在,当您执行
hg更新时,情况变得复杂起来,因为mercurial注意到您的回购协议有问题。你需要通过合并来解决两个头的问题,就像mercurial的建议一样

但是,执行
hgmerge
会给您带来第二个错误,这一次是因为您没有在回购协议中提交所有更改。现在你有两个选择。当您尝试执行
hg status
命令时,是否看到前面有
M
的文件?如果您确实对其进行了修改,并且希望将其包括在回购协议中,请执行以下操作:

hg commit -m "Committing remaining files"
hg merge
hg commit -m "Merge"
这是为了提交剩余的更改,合并两个头部,然后提交合并更改集。mercurial不希望使用未提交的更改进行更新的原因是出于安全原因。它不想让你失去目前的工作。这就引出了第二种选择。但是,如果不需要修改文件中的更改,则可以放弃这些更改。您可能在混乱期间尝试了其他操作,更新了一些文件,使您处于中间状态。如果是这种情况,您可以快速放弃更改,并通过执行以下命令(取消更改)来解决问题:

更新将简单地清除回购协议,合并将是可能的。提交合并后,就可以发出最终推送

hg push

如果你很幸运,没有人在远程回购协议上推动任何其他内容,那么推动应该会成功。否则,您可以再次拉、合并、提交和推送。

执行
hg status
,是否列出了任何文件,除了可能带有问号的文件?@LasseV.Karlsen那里我更新了您在本地有未提交的更改,这就是Mercurial抱怨的原因。如果您决定更新到其他变更集,Mercurial将尝试将本地未提交的更改与您的工作文件夹父项和您要更新到的变更集之间所做的任何操作“合并”。合并不能与未提交的更改一起完成,因为合并操作将修改未提交的文件。所以这些文件应该提交吗?如果是这样,那么您应该这样做,然后您可以更新和/或合并。@LasseV.Karlsen是正确的。如果启用了扩展名,您也可以搁置本地更改,以便稍后将其带回。@LasseV.Karlsen但我不明白为什么必须合并。它不是一个分支,而是主线。要求一个愚蠢的解释是不是太过分了?。我认为更新会带来头部更改集中修改的文件。如果没有问题,那么我的本地repo(我一直在工作的地方)将更新为最新的服务器版本。必须注意的是,在本例中,我没有修改远程更改中的文件。我尝试按照您的建议进行修改,但最终得到了一个不需要的“分支”,我不得不合并,因此在日志中显示了这一点。我不太清楚为什么一定是这样,如果我再次克隆回购协议,我就有了最新版本。如果我复制修改过的文件,我不必进行合并,只需提交更改即可。我以前不想提交我的更改,因为它仍在开发中(只是想从另一个东西中推出一个小的错误修复)。我必须找到一种方法来安全地开发新功能,同时仍然能够更新到最后的回购协议state@Jorge特性应该在自己命名的分支中开发,至少这是我强烈建议的。当您的功能完成后,您将在默认情况下重新合并。
hg push