Conflicto al fusionar ramas en Git
En el proceso de fusionar dos ramas pueden ocurrir conflictos,
si en cada una de las ramas hemos modificado el mismo archivo.
Consideremos una situación en la que en ambas
ramas master y test de
la lección anterior modificamos e hicimos
un commit en el mismo archivo file.txt.
Y luego aplicamos el comando de fusión:
git merge test
Como resultado veremos un error:
Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.
Además, en el archivo modificado veremos marcadores de conflicto:
<<<<<<< HEAD
aquí estarán escritos los cambios de la rama master
=======
aquí estarán escritos los cambios de la rama test
>>>>>>> test
En la parte superior del mensaje se indican los cambios realizados en la rama principal actual, en la parte inferior - en la segunda rama, que queremos fusionar con la primera. Para resolver el conflicto necesitamos llevar el contenido del archivo a una forma común, previamente eliminando (¡manualmente en el editor!) todas las designaciones de conflicto que Git dejó en él.
Después de que resolvamos el conflicto
(es decir, dejemos el código correcto en el archivo),
hagamos el staging de nuestro archivo y hagamos un commit
en la rama master, en la cual nos
encontramos actualmente:
git add file.txt
git commit -m "fusión"
Solo después de esto podemos cambiar
a la segunda rama test y realizar
todas las mismas operaciones que en la rama master,
incluyendo reemplazar el contenido del archivo
file.txt por el mismo que en la primera rama:
git add file.txt
git commit -m "fusión"
Ahora podemos cambiar nuevamente a la rama principal y fusionar la segunda en ella:
git switch master
git merge test
Cree intencionalmente un conflicto al fusionar ramas. Luego resuélvalo.