Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Resolución de Conflictos de Fusión | Trabajando con Ramas en Git
Conceptos Esenciales de Git

Resolución de Conflictos de Fusión

Desliza para mostrar el menú

Resolución de conflictos

En el capítulo anterior, ocurrió un conflicto de fusión, así que ahora es momento de solucionarlo. Primero, abre el archivo branch_learning.txt en el editor Vim utilizando el siguiente comando:

vim branch_learning.txt
Abriendo Vim

Si Vim no está instalado, puedes utilizar otro editor de texto como nano o atom reemplazando vim por el nombre de tu editor en el comando anterior.
Sin embargo, se recomienda utilizar Vim para facilitar el seguimiento de los pasos mostrados aquí.

Así se ve el archivo abierto en el editor Vim:

Archivo con conflictos abierto en Vim

Ahora puedes ver los marcadores de conflicto que indican las secciones en conflicto.
Estos marcadores utilizan flechas y símbolos especiales para resaltar las diferencias entre ramas:

  • <<<<<<< HEAD: marca el inicio de los cambios de la rama actual (master);
  • =======: separa los cambios de la rama actual (HEAD) y los de la rama que se está fusionando;
  • >>>>>>> feature/new-feature: marca el final de los cambios de la rama que se está fusionando.

Para resolver el conflicto, elige una de las siguientes opciones:

  • Conservar los cambios de la rama actual (master);
  • Conservar los cambios de la rama fusionada (feature/new-feature);
  • Editar manualmente el contenido.

Edita manualmente el archivo combinando los cambios de ambas ramas siguiendo los siguientes pasos:

1. Entrar en modo de edición

Primero, entra en el modo insertar en Vim presionando i. Esto permite editar el texto.

2. Editar la sección en conflicto

A continuación, combinar las líneas de ambas ramas de forma secuencial. El contenido resultante del archivo debe verse así:

New branch
New line from the master branch
New line from the feature branch
Resolución del conflicto

3. Salir del modo de edición, guardar y salir

Presionar la tecla Escape para salir del modo de inserción. Luego escribir :wq y presionar Enter para guardar los cambios y salir de Vim:

Salir de Vim

Confirmar el archivo

Una vez resueltos los conflictos, agregar el archivo branch_learning.txt al área de preparación y comprobar el estado:

git add branch_learning.txt
git status
Agregando archivo resuelto

El archivo fue modificado y agregado correctamente al área de preparación. Ahora proceder a confirmarlo:

git commit
Confirmando el archivo

Una vez más, se abre el editor de texto predeterminado (Vim en mi caso) con el mensaje de confirmación predeterminado sobre la fusión:

Mensaje de confirmación predeterminado

Entra en modo de inserción en Vim presionando i, luego modifica el mensaje agregando la línea Kept lines from both branches para describir cómo se resolvieron los conflictos.

Este es el mensaje de confirmación completo:

Merge branch 'feature/new-feature'

Kept lines from both branches

Para salir del modo de inserción, guardar los cambios y cerrar Vim, presiona la tecla Escape, luego escribe :wq y presiona Enter.

Guardando el mensaje modificado y saliendo de Vim

El commit se realizó con éxito y el conflicto de fusión está resuelto.

Fusión de tres vías

Ahora observemos nuestro historial de commits como un gráfico (opción --graph) con una línea por cada commit (opción --oneline):

git log --graph --oneline
Gráfico del historial de commits

Aquí puedes ver el commit de fusión más reciente junto con la estructura característica de una fusión de tres vías.

question mark

¿Cuál es la forma recomendada de resolver un conflicto de fusión en Git?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 6

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 4. Capítulo 6
some-alt