Resolver Conflictos de Fusión de Ramas Usando la Terminal y `vi`
Gabriel Villacis
Posted on July 24, 2024
Introducción
En este tutorial, aprenderás cómo resolver conflictos de fusión de ramas en Git utilizando solo la terminal y el editor vi
. Supongamos que tienes un repositorio con dos ramas (main
y rama1
) y que al intentar fusionar rama1
en main
, se produce un conflicto en un archivo llamado archivo.txt
.
Paso 1: Simular el Escenario de Conflicto
Supongamos que el contenido inicial de archivo.txt
es el siguiente:
Línea 1
En la rama main
, archivo.txt
se ha modificado a:
Línea 1
Línea 2 desde main
En la rama rama1
, archivo.txt
se ha modificado a:
Línea 1
Línea 2 desde rama1
Abre el terminal y navega a tu repositorio.
cd ruta/a/tu/repositorio
Intenta fusionar rama1
en main
.
git checkout main
git merge rama1
Verás un mensaje de conflicto, algo como esto:
CONFLICT (content): Merge conflict in archivo.txt
Automatic merge failed; fix conflicts and then commit the result.
Paso 2: Abrir el Archivo con Conflicto en vi
Abre el archivo conflictivo usando vi
.
vi archivo.txt
En vi
, verás las líneas conflictivas marcadas así:
<<<<<<< HEAD
Línea 2 desde main
=======
Línea 2 desde rama1
>>>>>>> rama1
Aquí, HEAD
representa los cambios en la rama actual (main
), y rama1
representa los cambios traídos desde rama1
.
Paso 3: Resolver el Conflicto
Opciones para Resolver el Conflicto
A continuación, se plantean 3 opciones que se pueden escoger para resolver el conflicto.
Opción 1. Mantener los cambios actuales (HEAD):
-
Si decides que los cambios en
main
deben prevalecer, elimina las líneas entre=======
y>>>>>>> rama1
, así como las marcas de conflicto.
<<<<<<< HEAD Línea 2 desde main ======= >>>>>>> rama1
-
Resultado final del archivo:
Línea 1 Línea 2 desde main
-
En
vi
:- Presiona
i
para entrar en modo de inserción. - Edita el archivo para eliminar las líneas innecesarias.
- Presiona
Esc
para salir del modo de inserción. - Escribe
:wq
y presionaEnter
para guardar y salir.
- Presiona
Opción 2. Aceptar los cambios entrantes (rama1):
-
Si decides que los cambios en
rama1
deben prevalecer, elimina las líneas entre<<<<<<< HEAD
y=======
, así como las marcas de conflicto.
<<<<<<< HEAD ======= Línea 2 desde rama1 >>>>>>> rama1
-
Resultado final del archivo:
Línea 1 Línea 2 desde rama1
-
En
vi
:- Presiona
i
para entrar en modo de inserción. - Edita el archivo para eliminar las líneas innecesarias.
- Presiona
Esc
para salir del modo de inserción. - Escribe
:wq
y presionaEnter
para guardar y salir.
- Presiona
Opción 3. Combinar ambos cambios:
-
Si deseas combinar ambos cambios, edita el archivo para incluir ambos conjuntos de cambios de forma coherente.
<<<<<<< HEAD Línea 2 desde main ======= Línea 2 desde rama1 >>>>>>> rama1
-
Resultado final del archivo:
Línea 1 Línea 2 desde main Línea 2 desde rama1
-
En
vi
:- Presiona
i
para entrar en modo de inserción. - Edita el archivo para combinar los cambios:
Línea 1 Línea 2 desde main Línea 2 desde rama1
- Presiona
Esc
para salir del modo de inserción. - Escribe
:wq
y presionaEnter
para guardar y salir.
- Presiona
Paso 4: Confirmar la Fusión
Después de resolver los conflictos, añade el archivo al índice:
git add archivo.txt
Finaliza la fusión con un commit:
git commit -m "Resolver conflictos de fusión entre main y rama1"
Paso 5: Verificar la Fusión
Verifica el historial de commits para asegurar que la fusión se completó correctamente:
git log --oneline
Deberías ver un commit de fusión en el historial.
Resumen
Este tutorial te muestra cómo resolver conflictos de fusión de ramas utilizando la terminal y el editor vi
. Aquí tienes los pasos clave:
- Identificar y abrir el archivo con conflictos.
- Usar
vi
para editar y resolver los conflictos, eligiendo mantener los cambios actuales, aceptar los cambios entrantes o combinar ambos, mostrando claramente cómo debería quedar el archivo en cada caso. - Añadir el archivo resuelto al índice.
- Confirmar la fusión.
Resolver conflictos de esta manera puede parecer intimidante al principio, pero es una habilidad valiosa que te ayudará a manejar el control de versiones de manera más eficiente. ¡Buena suerte!
Posted on July 24, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.