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

因此,我试图推送一个提交,并且看到一个远程头错误。 (有一个变更集可以修改versions.txt文件)

我先做了hg pull,然后又做了hg update

错误是:abort: crosses branches (merge branches or use --clean to discard changes)

然后我尝试了hg mergeabort: outstanding uncommitted changes (use 'hg status' to list changes)

但是我不理解,为什么如果我不修改versions.txt,为什么不能将其合并。

我将做很多事情,即开发和合并,以与主要开发仓库保持一致。我该如何解决?

HG状态:

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

最佳答案

好的,忘记version.txt,在这里不相关。您有2个存储库,一个在系统上,一个在远程系统上。

第一次尝试推送时,您尝试在远程存储库上发送变更集,并且出现错误消息,除非您发出--force选项,否则您无法推送第二个head。这是因为其他人已经击败您,并在同一分支上推送了变更集(修改version.txt)(您称其为主行,实际上也是一个分支,并且可能称为默认)。

接下来的工作很好,您从远程存储库中提取了更改来解决2磁头问题。这样,您就是默认以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 update时,它变得很复杂,因为Mercury会注意到您的存储库有问题。您将需要通过合并来解决2头问题,就像mercurial的建议一样。

但是,执行hg merge会给您第二个错误,这是因为您尚未在存储库中提交所有更改。现在您有2个选择。您在尝试使用M命令时看到的文件前面带有hg status吗?如果确实修改了它们,并且想要将它们包括在存储库中,请执行以下操作:

hg commit -m "Committing remaining files"
hg merge
hg commit -m "Merge"


这是提交剩余的更改,合并两个头部,然后提交合并更改集。 mercurial不想使用未提交的更改进行更新的原因是出于安全原因。它不希望您失去当前的工作。这将我带到第二个选项。但是,如果不需要修改后的文件中的更改,则可以放弃这些更改。您可能在混乱中尝试了其他操作,从而更新了一些文件并使您处于中间状态。在这种情况下,您可以通过执行以下命令来快速放弃更改并解决问题(丢失更改):

hg update --clean
hg merge
hg commit -m "Merge"


更新将只清除仓库,并且可以合并。提交合并后,即可发出最终推送。

hg push


如果您很幸运,但是没有人在远程仓库上推送其他任何东西,那么推送应该会成功。否则,您可以再次拉,合并,提交和推送。

关于merge - HG合并:未完成的未完成更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23253752/

10-13 07:15
查看更多