Es posible que se realicen cambios en las dos ramas que generen conflictos a la hora de integrarlas (p.e. si se crea un archivo con el mismo nombre en las dos ramas o si se cambia la misma línea de un archivo). En este caso es necesario solucionar los conflictos a la hora de hacer el git merge
.
Por ejemplo, suponiendo que en master
se creó un archivo llamado prueba.txt
con un texto Hola desde master
y en mi-rama
se creo otro archivo con el mismo nombre pero el texto Hola desde mi-rama
, al hacer el git merge
veríamos lo siguiente en la consola:
$ git checkout master
$ git merge mi-rama
Auto-merging prueba.txt
CONFLICT (add/add): Merge conflict in prueba.txt
Automatic merge failed; fix conflicts and then commit the result.
La línea 4 nos dice que existe un conflicto en prueba.txt
. Al abrir el archivo veríamos algo así:
<<<<<<< HEAD
Hola desde master
=======
Hola desde mi-rama
>>>>>>> mi-rama
Lo que está entre la línea 1 y 3 es lo que está en master
y lo que está entre la línea 3 y 5 es lo que está en mi-rama
. Para solucionar el conflicto debemos decidir qué vamos a dejar y qué vamos a eliminar.
Muy importante es siempre elimianar las líneas que definen los límites (las que comienzan con <<<<<<<
, =======
y >>>>>>>
).
Por ejemplo, asumiendo que queremos dejar las dos frases deberíamos modificar el archivo para que quede de la siguiente forma:
Hola desde master
Hola desde mi-rama
Una vez solucionado el conflicto debemos indicarle a git que ya lo solucionamos utilizando el comando git add
y continuar con el merge.
git add prueba.txt
git commit -m 'Merge branch "mi-rama"'
Si omites el mensaje se abrirá el editor de texto por defecto para que lo ingreses.