git control de versiones

Aprende Git de manera sencilla: Trabajando con Ramas

En este quinto artículo sobre la guía para aprender Git de manera sencilla y desde cero, vamos a ver cómo trabajar con ramas. Una rama en Git es una bifurcación del flujo de desarrollo del proyecto. Cada repositorio tiene, como mínimo, una rama, en la que almacena los commits realizados en dicho flujo de trabajo.

El uso de ramas nos permite establecer varios flujos de desarrollo, separando el trabajo en curso, de las versiones ya estables de nuestro proyecto. Cada rama debe tener un nombre lo suficientemente descriptivo para saber de un vistazo qué tipo de desarrollo se ha hecho sobre ella.

Al crear un repositorio se genera por defecto una rama principal llamada master. Al clonar o sincronizar un proyecto, lo normal es situarse en la rama principal y descargarnos el proyecto.

Esta rama debe contener lo que hay en producción y nunca debe trabajarse directamente sobre ella.

Creando una nueva rama

Para crear una nueva rama, existen varias maneras disponibles. El comando adecuado para ello es git branch seguido del nombre que queramos dar a la rama. Esto simplemente creará en local una rama nueva con el nombre indicado.

Usualmente se utiliza el comando git checkout, con el flag -b y el nombre de la rama. De este modo matamos dos pájaros de un tiro: Por un lado creamos la rama con el nombre indicado, y por otro nos cambiamos automáticamente a dicha rama, al contrario que con git branch.

En las últimas versiones de Git tenemos disponible el comando git switch, que nos permite crear una rama y cambiar entre una y otra. Aparece para tener un comando específico para el cambio de ramas, ya que checkout se puede utilizar para más funciones:

git branch [branch_name]

git checkout -b [branch_name]

git switch -c [branch_name]

Con cualquiera de estos comandos crearemos una nueva rama, copia o bifurcación de la rama en la que nos encontramos actualmente. Con el comando git branch (a secas), podemos ver las ramas que tenemos creadas, y en cual estamos situados.

Subiendo la nueva rama local, al repositorio remoto

Cuando creamos una rama, por defecto, sólo existe en nuestro repositorio local. Para añadirla al repositorio remoto, tenemos que usar el comando git push:

git push -u origin [branch_name]

Cambiando de rama

Para movernos entre ramas, lo haremos con el comando git checkout o con git switch, creado específicamente para ello en las últimas versiones, con esta sintaxis:

git checkout [branch_name]

git switch [branch_name]

Al ejecutar este comando sobre nuestro repositorio local, Git cambiará el contenido del directorio de trabajo, por el contenido existente en dicha rama, incluyendo ficheros actualizados, borrados o eliminados, en la última versión indexada por dicha rama.

Fusionando ramas

En un flujo normal trabajaremos sobre una rama creada a partir de la rama master o la rama develop, en función de la política de ramas establecida.

Una vez terminado el desarrollo en la rama secundaria sobre la que estamos trabajando, volcaremos su contenido a la rama de la que procede. A este proceso, se le conoce como «fusionar ramas».

Al fusionar dos ramas, los commit realizados en la rama «hija» pasan a incorporarse en la rama «padre», con todos los cambios realizados en ellas.

La fusión de dos ramas, no implica la desaparición de la rama «hija». La rama «hija» sigue existiendo, y podemos volver a ella cuando queramos, para añadir mas cambios.

Para fusionar dos ramas, tenemos el comando git merge. Para realizar la fusión, debemos cambiarnos a la rama «padre» donde queremos aplicar los cambios, y aplicar merge indicando la rama «hija» que queremos fusionar.

# Ejemplo para mergear la rama 'development' en 'master', una vez que el trabajo está hecho, comiteado y pusheado en development
# Cambiamos a master
git checkout master

# Hacemos un pull para asegurarnos de que no hay trabajo nuevo
git pull

# Mergeamos sobre master (rama actual) la rama en la que tenemos los cambios (development)
git merge development

Borrando ramas

Si queremos borrar una rama en la que hemos desarrollado algo, porque esa feature, issue o hot fix estén cerrados, tenemos que cambiarnos a otra rama diferente a la que queremos borrar. Una vez situados en otra rama, podemos borrar la que nos interesa con el flag -d. Si queremos que borre sin preguntar deberemos usar el flag -D.

git branch -d [branch_name]

git branch -D [branch_name]

Esto nos borrará la rama local. Pero, en el repositorio remoto, la rama sigue existiendo. Para borrarla y mantener el repositorio limpio, debemos usar el comando git push --delete con la siguiente sintaxis:

git push origin --delete [branch_name]

¿Te ha resultado útil esta información? 🍺

Si este post te ha resuelto un problema, invítame a un café o a una cerveza. Con este pequeño gesto me animas a seguir escribiendo.

Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *:

  • El fin del tratamiento es únicamente la moderación de comentarios para evitar spam
  • La legitimación es tu consentimiento al comentar
  • No se comunicará ningún dato a terceros salvo por obligación legal
  • Tienes derecho al acceso, rectificación y eliminación de los comentarios