Categorías
- Redes (10)
- Git y GitHub (23)
- Desarrollo de software (21)
- Sistemas operativos (28)
Cómo manejar conflictos en git: Guía paso a paso con ejemplos prácticos
Cómo resolver conflictos en Git: Guía práctica para desarrolladores
Los conflictos en Git son situaciones que ocurren cuando Git no puede fusionar automáticamente los cambios de dos ramas. Esto sucede cuando hay modificaciones en la misma línea de código o en el mismo archivo, obligando a Git a detener el proceso y a solicitar nuestra intervención para resolver dicho conflicto.
¿Por qué ocurren los conflictos?
Los conflictos surgen principalmente por dos razones:
- Un compañero de equipo modificó la misma línea de código que nosotros.
- Nosotros mismos hicimos cambios en el mismo archivo y en las mismas líneas en dos ramas diferentes.
Git nos ayuda a gestionar estos escenarios, pero es fundamental saber cómo tomar el control cuando el proceso automático de fusión falla.
Escenario práctico: creando un conflicto de merge
Para entender cómo solucionar un conflicto de merge, vamos a replicar el problema. Sigue estos pasos para crear un escenario de conflicto y practicar su resolución:
-
Crear una nueva rama:
Comenzaremos creando una nueva rama llamada rama-conflicto.git checkout -b rama-conflicto
-
Hacer cambios en la nueva rama:
Ahora, modifica el archivo misiones.md en la rama rama-conflicto y guarda los cambios.
Realiza el commit de estos cambios.

-
Hacer cambios en la rama master:
Vuelve a la rama principal (master) y haz un cambio en la misma línea del archivo misiones.md que modificaste anteriormente.git checkout master
Guarda el archivo.

Realiza el commit de esta nueva modificación.

Resolviendo el conflicto de merge
Ahora que hemos modificado el mismo archivo en dos ramas distintas, al intentar unirlas, Git nos mostrará un conflicto. El proceso de unificación de ramas, conocido como merge, no se completará automáticamente.
-
Intentar la fusión:
Desde la rama master, ejecuta el comando git merge para intentar unir rama-conflicto.git merge rama-conflicto
Como se esperaba, Git detiene el proceso y nos avisa del conflicto.
-
Identificar y editar los cambios:
Si regresas a tu editor de código (como VS Code), verás que el archivo misiones.md ahora tiene marcadores especiales que indican las áreas del conflicto.
Estos marcadores te muestran los cambios de ambas ramas:
- «««< HEAD: Indica el inicio de los cambios de la rama actual (master).
- =======: Separa los cambios de la rama actual de los de la rama que quieres fusionar.
- »»»> rama-conflicto: Indica el final de los cambios de la otra rama (rama-conflicto).
-
Solucionar el problema manualmente:
Para solucionar el conflicto, debes editar el archivo manualmente y decidir con qué cambios te quieres quedar. Puedes:- Mantener solo los cambios de master.
- Mantener solo los cambios de rama-conflicto.
- Combinar ambas versiones.
- Crear una versión completamente nueva.
Una vez que hayas editado el contenido y eliminado los marcadores de conflicto, guarda el archivo.

-
Finalizar la fusión:
Después de guardar los cambios, el conflicto de Git ya está resuelto. Ahora solo queda indicar a Git que el problema ha sido solucionado. Para ello, añade el archivo al staging area y realiza un nuevo commit.git commit -am "Unión de ramas con conflicto solucionado"
Con este commit, la fusión queda registrada en el historial del proyecto.
Limpieza de ramas
Una vez que la fusión se ha completado con éxito, ya no necesitas la rama que causó el conflicto. Es una buena práctica eliminar las ramas que ya no son necesarias para mantener tu repositorio limpio y organizado.
git branch -d rama-conflicto

Al dominar esta técnica, podrás resolver conflictos de Git con confianza y mantener un flujo de trabajo fluido en cualquier proyecto.
Agregados recientemente
- Guía para la gestión de permisos en Linux con chmod
- Comprendiendo los permisos de archivos y directorios en Linux
- Aprende a escribir scripts en Linux: De la línea de comandos a la automatización
- El comando Grep: Búsqueda y filtrado de patrones en Linux
- Introducción al manejo de procesos en Linux (foreground, background, kill y más)
- Pipes en Linux: El poder de encadenar comandos
- Comandos esenciales para la administración de usuarios en Linux
