Árbol de páginas

Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

...

En ocasiones al hacer el merge de una rama con otra aparecen conflictos (al estilo de SVN o de cualquier otro sistema de control de versiones) y nos vemos obligados a resolverlos para poder integrarlo

Si ejecutamos el comando

Bloque de código
$ git status

Obtendremos más informaciónImage Removed

Image Added

Aquí hemos intentado hacer merge de la rama jira-IDI-131 con la rama ejemplo_conflictos. Ambos tienen el fichero ejemplo.txt con contenidos incompatibles y hay que resolverlo manualmente.

El contenido del fichero ejemplo.txt en la rama ejemplo_conflictos es

Bloque de código
para dar un conflicto gordo

y en la rama jira-IDI-131

Bloque de código
este es un ejemplo para dar conflicto

Si abrimos el fichero con el editor veremos los problemas

Bloque de código
<<<<<<< HEAD
para dar un conflicto gordo
=======
este es un ejemplo para dar conflicto
>>>>>>> jira-IDI-131

Para localizar el inicio del conflicto hay que localizar el marcador «««<. El marcador ======= separa los cambios entre las 2 ramas, seguido de »»»> BRANCH-NAME. En este ejemplo alguien escribió “para dar un conflicto gordo” en la rama base y otra persona escribió “este es un ejemplo para dar conflicto” en la rama jira-IDI-131

Decide qué es lo que quieres incorporar, o genera una nueva versión del fichero que incorpore ambos cambios. Elimina los marcadores de conflicto «««<, =======, »»»> y haz los cambios finales.

Bloque de código
$ git add .
$ git commit -m "Resuelto el conflicto de merges"

En ocasiones GIT detecta 2 commits hacia el mismo fichero y a la hora de hacer un push de la rama nos puede dar problemas

Bloque de código
$ git push origin jira-XXX

Nos puede dar como resultado

Bloque de código
To https://gitlab.um.es/mncs/portalfundeweb.git
 ! [rejected]        jira-XXX -> jira-XXX (non-fast-forward)
error: failed to push some refs to 'https://gitlab.um.es/mncs/portalfundeweb.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Para arreglarlo podemos hacer lo siguiente

Bloque de código
$ git pull --rebase origin jira-XXX

Y si tenemos suerte será capaz de solventar el conflicto

Bloque de código
From https://gitlab.um.es/mncs/portalfundeweb
 * branch            jira-XXX -> FETCH_HEAD
First, rewinding head to replay your work on top of it...
Applying: arreglamos el problema con el settings
Using index info to reconstruct a base tree...
M       .m2/settings.xml
.git/rebase-apply/patch:42: trailing whitespace.
                                <pluginRepository> <id>plugins.archiva.atica.umu.es</id>
.git/rebase-apply/patch:43: trailing whitespace.
                                    <name>ATICA  - UMU Plugins Repository</name>
.git/rebase-apply/patch:44: trailing whitespace.
                                    <url>https://archiva.um.es/archiva/repository/FundeWeb/</url>
.git/rebase-apply/patch:45: trailing whitespace.
                                        <releases>
.git/rebase-apply/patch:46: trailing whitespace.
                                            <enabled>true</enabled>
warning: squelched 5 whitespace errors
warning: 10 lines add whitespace errors.
Falling back to patching base and 3-way merge...


Pero puede no ser así y que nos responda algo como

...