HG Merge:出色的未完成的变化

Jor*_*eFG 2 merge mercurial

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

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

我做了一个hg pull,然后hg update.

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

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

但我不承认,为什么如果版本.txt没有被我修改,为什么它不能合并.

这是我将要做的很多事情,即开发和合并,以保持与主dev开发者的内联.我怎么能解决这个问题?

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Vin*_*nce 7

好吧,忘掉了version.txt,这里不相关.你有2个repos,一个在你的系统上,另一个在远程的.

当您第一次尝试按下时,您尝试在远程仓库上发送变更集,并且除非您发出--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
|
Run Code Online (Sandbox Code Playgroud)

现在它变得复杂了,hg update因为mercurial注意到你的回购有问题.你需要通过合并修复2头问题,就像mercurial的建议一样.

但是,这样做hg merge会给您带来第二个错误,这次是因为您尚未在回购中提交所有更改.现在你有2个选择.您M在尝试hg status命令时看到前面有这些文件的文件?如果您确实修改了它们,并且想要将它们包含在仓库中,请执行以下操作:

hg commit -m "Committing remaining files"
hg merge
hg commit -m "Merge"
Run Code Online (Sandbox Code Playgroud)

这是提交遗留更改,合并2个头,然后提交合并变更集.出于安全原因,mercurial不希望使用未提交的更改进行更新的原因.它不希望你失去你当前的工作.这让我想到了第二种选择.但是,如果不需要修改文件中的更改,则可以放弃这些更改.您可能会在混淆期间尝试其他内容,这会更新某些文件并使您处于中间状态.如果是这种情况,您可以通过执行这些命令来快速丢弃更改并解决问题(丢失更改):

hg update --clean
hg merge
hg commit -m "Merge"
Run Code Online (Sandbox Code Playgroud)

更新将简单地清除repo,并且可以进行合并.合并提交后,您可以发出最终推送.

hg push
Run Code Online (Sandbox Code Playgroud)

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