Categorías
- Redes (10)
- Git y GitHub (23)
- Desarrollo de software (21)
- Sistemas operativos (28)
Aprende git: Fusión de ramas con el método Fast-Forward
Git Merge Fast-Forward: Viaja en el Tiempo y Fusiona Ramas
Descubre el escenario de Git Merge Fast-Forward, una de las formas más comunes de fusionar cambios en un repositorio. Este post te guiará paso a paso para simular este escenario, desde la creación de una nueva rama hasta la fusión final con la rama principal. Aprenderás cómo los commits y el historial de tu proyecto se ven afectados en este proceso, manteniendo tu trabajo organizado y tu repositorio actualizado.
Preparación del entorno
Para este tutorial práctico, utilizaremos una carpeta con archivos de ejemplo para familiarizarnos con el concepto de ramas en Git.
Puedes descargar el proyecto en este enlace:
Descargar Proyecto
Una vez descargado el archivo .zip, descomprímelo y accede a él a través de tu terminal de Git (como git bash) utilizando el comando cd [ruta de la carpeta].
Una vez que tengas el repositorio abierto en git bash, podemos continuar con las prácticas de Git.
Historial de Commits y Creación de Ramas
Ahora que estamos dentro del proyecto, podemos visualizar el historial de commits que se han creado usando el alias git lg.

Abriremos también nuestro repositorio en VSCode y simularemos el escenario de “Git Merge Fast-Forward”. Para empezar, crearemos un nuevo archivo llamado villanos.md y le agregaremos el siguiente contenido:

Trabajando en la Nueva Rama
Ahora que tenemos estos nuevos cambios en nuestro repositorio, podemos simular que se trata de una nueva funcionalidad que aún no queremos integrar en la rama master. Para ello, es necesario crear una nueva rama utilizando el comando:
git branch [nombre de la nueva rama]

Podemos verificar cuántas ramas existen en nuestro repositorio con el comando git branch. La rama actual se indicará en color verde. Como necesitamos movernos a la nueva rama, usaremos el comando:
git checkout [nombre de la rama].

Una vez que viajamos a la nueva rama, podemos verificar el estado de los commits con git lg. Observamos que tanto la rama master como la nueva rama villanos apuntan al mismo commit.
Ahora, crearemos el commit del nuevo archivo villanos.md que hemos creado.

Cuando ejecutamos git log de nuevo, podemos observar que las ramas apuntan a diferentes commits. Esto confirma que estamos trabajando en la nueva rama.

Añadiremos una nueva modificación en el archivo villanos.md y volveremos a hacer un commit.


Al ejecutar git lg nuevamente, notamos que nuestra rama master se ha quedado dos commits atrás. Esto corrobora por segunda vez que seguimos trabajando dentro de la rama de desarrollo.

Si en este punto cambiamos de la rama villanos a la rama master con git checkout master, ocurrirá algo interesante:


El nuevo archivo villanos.md que habíamos agregado es eliminado y el editor nos marca en rojo que no existe en la rama master. Este es el comportamiento esperado, ya que la rama master no tiene conocimiento de los cambios que se han realizado en la rama villanos.
Entendiendo el Escenario Git Fast-Forward
El Git Merge Fast-Forward ocurre cuando la rama que recibirá los cambios (en este caso, master) no ha tenido nuevos commits desde que se creó la rama que se fusionará (en este caso, villanos). Git simplemente mueve el puntero de la rama master hacia adelante para que apunte al último commit de la rama villanos. Este proceso es rápido y no crea un nuevo commit de fusión.
Para ejecutar la fusión, debemos estar posicionados en la rama que recibirá los cambios. Si queremos fusionar la rama villanos en la rama master, primero debemos asegurarnos de estar en la rama master.
Ejecutando la Fusión (Merge)
Ahora es momento de implementar los cambios de la rama villanos a la rama master con el comando:
git merge villanos-rama

Como se puede observar, el merge se ha realizado correctamente y el resultado es un Fast-Forward. Si ejecutamos git lg nuevamente, veremos lo siguiente:

Las dos ramas que hemos creado ahora apuntan al mismo commit y el archivo villanos.md ya no se muestra como eliminado.
Limpieza de Ramas
Una vez que la nueva rama ha sido fusionada, ya no cumple una función dentro del repositorio. Lo habitual es eliminar las ramas que ya no se utilizan para mantener el repositorio limpio. Esto se logra con el comando:
git branch -d [nombre de la rama]

Ampliando el Concepto de Merge en Git
Aunque el Fast-Forward merge es sencillo y muy común, Git también maneja otros escenarios de fusión. Es importante entender cuándo ocurre un Fast-Forward y cuándo se requiere un merge de tres vías (Three-way merge).
El Three-way merge se da cuando la rama principal tiene commits nuevos que no existen en la rama que se va a fusionar. En este caso, Git no puede simplemente mover el puntero. En su lugar, crea un nuevo commit de fusión (merge commit) que tiene dos padres: el último commit de la rama principal y el último commit de la rama que se fusiona. Este commit de fusión registra los cambios combinados de ambas ramas, manteniendo un historial más claro del proceso.
Este tipo de merge es muy útil en escenarios de colaboración, ya que permite documentar explícitamente la integración de una funcionalidad desarrollada en una rama separada.
El conocimiento de estos diferentes tipos de fusiones te dará más control sobre el historial de tu repositorio y te ayudará a trabajar de manera más eficiente, especialmente en equipos de desarrollo.
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
