Chuck's Academy

Git Branching y Merging

Fusión (Merging) de Ramas

Fusión (Merging) de Ramas en Git

La fusión de ramas (merging) en Git es el proceso de combinar cambios realizados en diferentes ramas para integrarlos en una sola rama. Esto es esencial para consolidar el trabajo de equipo y finalizar características o correcciones de errores en la rama principal del proyecto.

Tipos de Fusión en Git

Git proporciona varias maneras de realizar una fusión. Los dos tipos más comunes son:

  1. Fast-Forward Merge: Esta fusión ocurre cuando la rama de destino se encuentra directamente detrás de la rama que se está fusionando. Git simplemente mueve el puntero hacia adelante.
  2. Three-Way Merge: Este tipo de fusión ocurre cuando las ramas han evolucionado de manera independiente. Git utilizará tres puntos: los dos últimos commits de cada rama y su ancestro común más reciente.

Preparación para la Fusión

Antes de fusionar ramas, es recomendable asegurarse de que el historial local esté actualizado. Para hacerlo, realiza un pull de la rama de destino:

bash

Esto asegura que la rama de destino esté al día con el repositorio remoto.

Realizar una Fusión

Para fusionar una rama en la rama actual, usa:

bash

Ejemplo:

Supongamos que estás en main y quieres fusionar feature-xyz:

bash

Este comando fusiona feature-xyz en main.

Fast-Forward Merge

Si main no ha avanzado desde que se creó feature-xyz, Git realizará una fusión fast-forward:

bash

Three-Way Merge

Si tanto main como feature-xyz han tenido desarrollos independientes, Git realizará una fusión de tres vías:

bash

Visualización de Fusiones

Después de una fusión exitosa, puedes visualizar el historial de commits con:

bash

Este comando muestra un grafo del historial de commits, permitiendo ver claramente las ramas y las fusiones.

Abortar una Fusión

Si te encuentras con problemas durante la fusión, puedes abortarla:

bash

Esto revertirá el estado del repositorio a como estaba antes de intentar la fusión.

Manejo de Conflictos de Fusión

A veces, cuando Git no puede combinar automáticamente los cambios, ocurren conflictos de fusión. Los conflictos de fusión deben resolverse manualmente.

  1. Identificación del Conflicto: Git marcará los conflictos en los archivos afectados e indicará los conflictos al intentar hacer un merge.
  2. Resolución del Conflicto: Edita los archivos conflictivos para resolver los conflictos manualmente.
  3. Agrega los Archivos Resueltos: Una vez resueltos los conflictos, agrega los archivos para prepararlos para el commit:
    bash
  4. Finaliza la Fusión con un Commit:
    bash

Resumen

  1. Preparar la rama para la fusión: git pull origin <rama-destino>
  2. Fusión básica: git merge <nombre-de-la-rama>
  3. Fast-Forward Merge: Se realiza automáticamente si no hay cambios divergentes.
  4. Three-Way Merge: Se realiza automáticamente si hay cambios divergentes.
  5. Visualización: git log --oneline --graph --all
  6. Abortar una fusión: git merge --abort
  7. Resolver conflictos de fusión manualmente

Hacer una fusión correctamente es crucial para mantener un historial de proyecto limpio y coherente. En los próximos capítulos, profundizaremos en la resolución de conflictos de fusión y otras estrategias avanzadas de fusión.


Pregúntame lo que sea