Conceptos básicos de las ramas

GitBeginner
Practicar Ahora

Introducción

Imagine que está escribiendo una historia. Llega a un punto en el que la trama puede seguir dos caminos: el héroe lucha contra el dragón o se hace amigo de él. Quiere escribir ambas versiones para decidir cuál es mejor, pero no quiere estropear el manuscrito principal.

En Git, las ramas le permiten hacer exactamente eso. Crean una línea de desarrollo paralela en la que puede experimentar de forma segura. Las ramas son uno de los conceptos más importantes de Git porque permiten aislar el trabajo de forma sencilla y con un coste muy bajo.

En Git, una rama no es una copia completa del proyecto. Principalmente, es un puntero móvil a una línea de commits. Por eso crear ramas es rápido y ligero.

  1. Desarrollar funcionalidades: cree un nuevo sistema de inicio de sesión en un espacio separado.
  2. Experimentar: pruebe una nueva idea de diseño sin romper el sitio web actual.
  3. Corregir errores: aplique un parche a un error crítico de forma aislada.

En este laboratorio creará una línea temporal paralela (una rama), hará cambios en ella y volverá a la línea temporal principal para comprobar que sus experimentos no afectaron al proyecto original.

Crear una rama de funcionalidad

De forma predeterminada, cada repositorio de Git comienza con una rama principal, que normalmente se llama master o main. Considérela la «línea temporal principal»: la versión oficial y estable del proyecto.

Para trabajar en una nueva funcionalidad, como una página de inicio de sesión, sin poner en riesgo la estabilidad del proyecto principal, debe crear una rama nueva.

Compruebe su ubicación actual:

git branch

Salida:

* master

El carácter * indica que actualmente se encuentra en la línea temporal master.

Este marcador muestra el contexto de la rama actual. En Git, muchos comandos actúan en relación con la rama a la que apunta HEAD, por lo que es importante saber dónde se encuentra.

Cree una rama nueva llamada feature_login:

git branch feature_login

¡Ya ha creado una nueva línea temporal! Sin embargo, todavía no se encuentra en ella.

Esto muestra una distinción importante de Git: crear una rama y cambiar a una rama son acciones independientes. Una rama puede existir sin ser el contexto de trabajo actual.

Verifique que la rama se haya creado:

git branch

Salida:

  feature_login
* master

La rama feature_login existe, pero * indica que todavía se encuentra en master.

Cambiar a la rama nueva

Crear una línea temporal no es suficiente; debe cambiar a ella. El comando para cambiar de rama es git checkout.

Cambie a la rama nueva:

git checkout feature_login

Salida:

Switched to branch 'feature_login'

Verifique que haya cambiado:

git branch

Salida:

* feature_login
  master

¡El asterisco (*) se ha movido! Ahora está trabajando dentro de la línea temporal feature_login. A partir de este momento, cualquier cambio que haga ocurrirá únicamente en esta rama.

De forma más precisa, los commits nuevos que haga avanzarán feature_login, no master. Ambas ramas siguen compartiendo el historial anterior hasta el punto en el que se separaron.

Trabajar en la rama de funcionalidad

Ahora que se encuentra en un espacio seguro para experimentar, escriba algo de código. Creará un script para nuestra «funcionalidad de inicio de sesión».

Cree un archivo llamado login.sh:

echo "echo 'Logging in...'" > login.sh

Compruebe que existe en su directorio:

ls

Debería ver tanto README.md (heredado de master) como el nuevo archivo login.sh.

En este momento, login.sh solo es un archivo en el disco. Para guardarlo oficialmente en el historial de esta rama, debe crear un commit.

Esto refuerza el concepto de rama: los archivos aparecen en el árbol de trabajo, pero el historial de la rama solo cambia cuando crea commits en esa rama.

Confirmar los cambios en la rama

Guarde su trabajo. Recuerde el flujo de trabajo estándar de Git: Inicializar -> Preparar -> Confirmar.

Compruebe el estado:

git status

login.sh aparece como Untracked.

Prepare el archivo:

git add login.sh

Confirme el archivo en el historial de feature_login:

git commit -m "Add login feature script"

Salida:

[feature_login 8a2b3c] Add login feature script

Ahora ha registrado este cambio de forma permanente, pero únicamente en la línea temporal feature_login.

Este aislamiento explica por qué las ramas son tan útiles. Le permiten desarrollar, probar o experimentar sin hacer avanzar la rama principal hasta que esté preparado.

Verificar el aislamiento de la rama

Este es el momento decisivo. Afirmamos que feature_login es un universo separado de master. Vamos a demostrarlo volviendo a master.

Cambie de nuevo a la rama master:

git checkout master

Salida:

Switched to branch 'master'

Mire sus archivos:

ls

¿Dónde está login.sh? ¡Ha desaparecido!

Esto es exactamente lo que queríamos. El archivo login.sh no existe en la línea temporal master. Su experimento está aislado de forma segura.

Para confirmar que no se ha perdido para siempre, vuelva a cambiar a la rama de funcionalidad:

git checkout feature_login
ls

¡Y ahí está de nuevo! Git intercambia al instante los archivos de su directorio cuando cambia entre líneas temporales.

Resumen

En este laboratorio ha aprendido el poder de las ramas:

  1. Seguridad: puede crear nuevas funcionalidades en una rama independiente (feature_login) sin poner en riesgo el código principal (master).
  2. Cambio de contexto: utilizó git checkout para alternar entre estas líneas temporales paralelas.
  3. Aislamiento: comprobó que los cambios confirmados en una rama no aparecen en otra.

Así es como trabajan los equipos profesionales. Los desarrolladores crean ramas para cada nueva funcionalidad o corrección de errores, y mantienen el código base principal limpio y estable.