Joaquin Martinez

Depura tus errores y construye la mejor versión de ti, cada línea cuenta.

Unión de ramas en Git: El escenario de la unión automática

22-01-2025
Git y GitHub
Git
Cover Post

Guía práctica: Cómo gestionar una unión automática de ramas en Git

En el mundo del control de versiones, la unión de ramas es una tarea común. Este post técnico te guiará a través de un escenario de unión automática o fast-forward merge en Git. Aprenderás a crear nuevas ramas, a realizar commits en diferentes líneas de tiempo y a entender visualmente cómo Git gestiona el historial de cambios, culminando en la unión sin conflictos.

  1. Preparando nuestro entorno
    Para este post, usaremos el mismo proyecto del tutorial anterior para ejemplificar un escenario de unión automática de ramas.

  2. Creando y trabajando en una nueva rama Normalmente, usaríamos git branch [nombre_rama] y git checkout [nombre_rama] para crear y cambiarnos a una nueva rama. Podemos simplificar este proceso en un solo comando para agilizar nuestro flujo de trabajo:

     git checkout -b rama-villanos
    

    alt text

    Ahora que hemos creado la nueva rama y nos encontramos en ella, procederemos a modificar el archivo villanos.md y a realizar un commit de los cambios. alt text

    alt text

    A continuación, haremos una nueva modificación en el mismo archivo y crearemos otro commit para registrar el cambio. alt text

    alt text

  3. Entendiendo el historial de commits
    Hasta este punto, podemos consultar el historial de commits con git log para visualizar el estado actual de cada rama del proyecto.

     git log --all --decorate --oneline --graph
    

    alt text

  4. Cambiando a la rama master y haciendo una modificación
    Ahora, nos moveremos de nuevo a la rama principal, master, para hacer una nueva modificación en un archivo diferente, heroes.md.

     git checkout master
    

    alt text

    Eliminamos a Daredevil del archivo heroes.md y registramos el cambio con un nuevo commit. alt text

    alt text

    alt text

    Al volver a consultar el historial con git log, veremos algo nuevo en el estado de nuestras ramas. Podemos observar que Git ha detectado una bifurcación, mostrando que se han realizado commits en dos ramas diferentes (master y rama-villanos) a partir de un commit común.

    alt text

  5. La unión automática o fast-forward merge
    Una vez que nos preparamos para la unificación de las ramas, se generará un nuevo escenario: la unión automática. Este tipo de merge ocurre cuando una de las ramas, en este caso master, no ha tenido nuevos commits desde que se creó la otra rama. Básicamente, la rama que se va a unir (master) está “adelante” de la rama que se va a fusionar. En lugar de crear un nuevo commit, Git simplemente avanza el puntero de la rama master al último commit de la rama rama-villanos.

    Para realizar la unión, ejecutamos el siguiente comando:

     git merge rama-villanos
    

    alt text

    Al ejecutar el comando, Git nos informará que se ha producido un Fast-forward merge. Esto significa que no ha sido necesario crear un nuevo commit de merge ya que no había conflictos que resolver.

    alt text

    alt text

    Finalmente, al ejecutar de nuevo git log, podemos observar el resultado: la rama master ha “absorbido” los commits de la rama rama-villanos. En este caso, el historial muestra la separación de las ramas (una en línea roja y otra en verde) y cómo al final se unen y terminan en la rama principal master.

    alt text

Entender el comportamiento de Git frente a los diferentes escenarios de unión nos da un mayor control de versiones en nuestros proyectos. Una unión automática es el escenario más simple y limpio, ya que no requiere la intervención del usuario para resolver conflictos. En futuros posts, exploraremos escenarios más complejos como los conflictos y cómo resolverlos.

Post Siguiente

Cómo manejar conflictos en git: Guía paso a paso con ejemplos prácticos

Post Anterior

Aprende git: Fusión de ramas con el método Fast-Forward