El comando git branch es la herramienta principal que utilizamos para administrar ramas de nuestro proyecto de Git.
Como vimos en el artículo anterior, en Git las ramas son solo etiquetas ligeras, que nos permiten tener líneas independientes de evolución del proyecto.
La filosofía de Git es: “Crea ramas para todo”. ¿Vas a arreglar una falta de ortografía? Crea una rama. ¿Vas a probar una librería nueva? Crea una rama.
Son baratas de crear y fáciles de destruir. En esta entrada veremos cómo hcarlo con el comando git branch.
Listar ramas: ¿Qué hay en mi proyecto?
Lo primero que solemos hacer al entrar en un proyecto es ver el panorama. Para ver qué ramas existen en tu repositorio local, simplemente escribe:
git branch
El resultado será algo parecido a esto:
develop
feature/login
* main
testing
- La lista: Te muestra todas las etiquetas locales disponibles.
- El asterisco (*): Indica dónde estás ahora mismo. El asterisco señala la rama a la que apunta tu
HEAD. En este caso, estamos trabajando enmain.
Crear una rama nueva
Para crear una nueva línea de trabajo hacemos,
git branch nombre-de-la-rama
Por ejemplo:
git branch feature/nuevo-menu
Cconfusión habitual. Ejecutar este comando, Git crea la rama, pero no te mueve a ella.
Si ejecutas git branch justo después, verás:
feature/nuevo-menu
* main
El asterisco sigue en main. Has creado la etiqueta, pero sigues “estando” la rama principal.
Para moverte a la nueva rama tendremos que usar git switch (que veremos en el próximo artículo).
Borrar ramas
Una vez que has terminado una tarea y has fusionado el código (merge) en la rama principal, esa rama de “feature” ya no sirve para nada. Si quieres puedes borrarla.
La forma estándar de borrar una rama es con la opción -d (delete):
git branch -d feature/nuevo-menu
Git es muy protector. Antes de borrar la rama, comprobará si ya la has fusionado.
- Si los cambios de esa rama ya están en en la rama actual), la borrará sin rechistar.
- Si la rama contiene cambios que no has fusionado (y que se perderían para siempre si la borras), Git te dará un error:
error: The branch 'feature/nuevo-menu' is not fully merged.
Borrado forzado (-D)
A veces quieres borrar una rama con cambios sin fusionar. Por ejemplo, hiciste una rama para probar una idea, la idea fue un desastre y quieres tirar todo ese código a la basura.
En ese caso, usamos la D mayúscula (que es un alias de —delete —force):
git branch -D feature/experimento-fallido
Esto borrará la rama y los commits asociados a ella se perderán (quedarán huérfanos hasta que el recolector de basura se los coma).
No puedes serrar la rama sobre la que estás sentado. Git no te permitirá borrar la rama marcada con el asterisco *.
Primero tienes que moverte a otra rama (main) y desde ahí borrar la otra.
Renombrar ramas (-m)
A veces escribes mal el nombre al crearla (feature/botno en vez de boton). O el alcance de la tarea cambia.
Para renombrar la rama en la que estás actualmente:
git branch -m nuevo-nombre-correcto
Si quieres renombrar una rama diferente (sin moverte a ella):
git branch -m nombre-viejo nombre-nuevo
