Resolución de Conflictos de Código en Git
Los conflictos de código ocurren en Git cuando hay cambios conflictivos en el mismo archivo entre dos ramas diferentes que están siendo fusionadas. Esto puede suceder cuando dos personas o tú mismo trabajando en diferentes ramas realizan cambios en las mismas líneas de código o en áreas cercanas del mismo archivo. Git no puede determinar automáticamente cuál es la versión correcta a conservar, por lo que marca estos conflictos para que el usuario los resuelva manualmente.
Aquí tienes un ejemplo práctico para entender mejor:
Supongamos que estás trabajando en una rama llamada feature/nueva_funcionalidad y
otro miembro de tu equipo está trabajando en una rama llamada hotfix/bug_fix.
Ambas ramas contienen cambios en el archivo app.js, específicamente en la misma función addUser().
Tu cambio en feature/nueva_funcionalidad:
// app.js en la rama feature/nueva_funcionalidadfunction addUser(name) { // Nueva lógica para agregar un usuario}El cambio en hotfix/bug_fix:
// app.js en la rama hotfix/bug_fixfunction addUser(name) { // Corrección de un bug en la función addUser()}Cuando intentes fusionar ambas ramas, Git detectará que hay un conflicto en el
archivo app.js porque ambas ramas han modificado la misma función addUser(), pero de manera diferente.
Para resolver este conflicto manualmente, seguirías estos pasos:
-
Git te informará sobre el conflicto cuando intentes fusionar las ramas. Verás un mensaje similar a “Conflicto de fusión en app.js”. Esto también se puede verificar ejecutando
git status. -
Abre el archivo en conflicto (
app.js) en tu editor de código. Dentro del archivo, verás las áreas conflictivas marcadas por Git, que generalmente se ven así:
<<<<<<< HEAD// Cambios en la rama actual (feature/nueva_funcionalidad)function addUser(name) { // Nueva lógica para agregar un usuario}=======// Cambios en la otra rama (hotfix/bug_fix)function addUser(name) { // Corrección de un bug en la función addUser()}>>>>>>> hotfix/bug_fix-
Analiza las diferencias entre las dos versiones y decide qué cambios deseas conservar. En este ejemplo, puedes elegir mantener la nueva lógica para agregar un usuario o la corrección de bug, o incluso combinar ambas según sea necesario.
-
Elimina las marcas de conflicto (
<<<<<<<,=======,>>>>>>>) y cualquier línea que no necesites, dejando el archivo en el estado deseado. -
Una vez que hayas resuelto todos los conflictos en el archivo, guarda los cambios.
-
Finalmente, marca el conflicto como resuelto ejecutando
git add app.jsy luego completa el proceso de fusión congit commit.