Portada por fretz.mx

¿Cómo eliminar ramas remotas y locales en Git?

Luis Burgos

Analizar, diseñar, codificar, probar y mantener. Todas son actividades dentro del proceso de desarrollo de software, pero, ¿limpiar? Sí, justo como eso que hacemos luego de comer sobre nuestro escritorio, limpiar las migajas en nuestro espacio de trabajo.

No basta con eliminar nuestra rama desde Github (Gitlab, Bitbucket, etc.) luego de que nuestros cambios se hayan integrado al código base. Esto solo elimina la rama en el remote, esto es la primera parte de la limpieza. ¿La segunda? Nuestro repositorio local.

Hoy quisiera contarles sobre un proceso sencillo para mantener actualizado su repositorio antes de iniciar a trabajar en una nueva funcionalidad como developers.

Primero, obtenemos el listado de ramas locales

Podríamos ejecutar el comando git branch y nuestra terminal mostrará algo como esto:

feature/navigation-controls
fix/button-color
feature/add-super-button
develop

Sin embargo, lo que realmente nos interesa es ver el panorama más amplio. Si ejecutamos git branch -a, dependiendo el estado actual de nuestro repositorio, veremos algo similar a:

feature/navigation-controls
fix/button-color
feature/add-super-button
master
develop
remotes/origin/chore/add-storybook
remotes/origin/feature/navigation-controls
remotes/origin/feature/add-super-button
remotes/origin/develop
remotes/origin/master
remotes/origin/chore/add-proposal-card
Espera, ¿kha?. Fuente del GIF.

La bandera -a nos ayudará a listar todas las referencias a ramas locales y remotas. Esto nos permitirá determinar qué ramas han quedado ociosas y debemos eliminar.

Nota: Existe la posibilidad de encontrarnos con la situación donde una referencia del listado ya no exista en nuestro repositorio remoto. En la siguiente sección lidiaremos con eso.

Siguiente paso: limpiamos las referencias remotas

El comando mágico es:

git remote prune origin

Esto solo eliminará las referencias a ramas remotas que ya no existen, la consola te confirmará que referencias se removieron:

* [pruned] origin/chore/add-proposal-card
* [pruned] origin/chore/add-storybook
* [pruned] origin/feature/super-button

Consideraciones:

  • El comando sólo eliminará las ramas relacionadas al origin (remote que especifiquemos como parte del comando)
  • Puedes volver a ejecutar git branch -a para verficar los cambios.
  • Para más información, Atlassian tiene un buen tutorial sobre git prune.

Finalmente, solo queda limpiar las ramas locales

Sabemos que la estructura del comando para eliminar una rama es:

git branch -d <your-branch-name> <another-branch-if-u-need>

Entonces, el siguiente comando eliminará la rama feature/add-super-button:

git branch -d feature/add-super-button

Sólo necesitas aplicar esto para cada una de las ramas que deseas eliminar. Un tip aquí es que puedes eliminar múltiples ramas separando cada rama con un espacio:

git branch -d feature/add-super-button chore/add-storybook

Nota: Si reemplazamos -d por -D estaremos forzando a Git a que elimine nuestra rama sin importar que nuestros cambios aún no se hayan integrado, así que debemos ser cuidadosos de no eliminar trabajo en progreso.

Para confirmar que todo ha resultado como lo pensamos, vuelve a ejecutar:

git branch -a

¡Listo! Tendremos un repositorio local actualizado sólo con las referencias remotas existentes y nuestro trabajo local en progreso o por iniciar.

Divertido y sencillo, ¿no?. Fuente del GIF.

Dato curioso

El mise en place es un conjunto de tareas para organizar y ordenar los ingredientes que un cocinero necesita antes de iniciar a cocinar. Este es un ejemplo de como un espacio de trabajo ordenado y limpio son parte del flujo de trabajo normal en otras disciplinas.

La limpieza es una de esas prácticas que todo chef realiza, no importa si cuenta con poca o mucha experiencia.

Listo, repite de vez en cuando

De la misma forma en que tu casa requiere limpieza periódica, tu espacio de trabajo también 🤭. Esto no sólo es un muy hábito de limpieza con propiedades catárticas, también es un excelente hábito que debemos adoptar para nuestro proceso personal de desarrollo de software.

Sígueme en Twitter, a veces comparto pensamientos sobre desarrollo de software o escribo mi experiencia siendo Software Engineer en Yellowme. ¡Agradecimientos a fretz.mx por crear otra increíble portada!

Responses (2)

What are your thoughts?

Muy buena receta! Algo que también me ayuda a mantener la limpieza es revisar con `git branch --merged <branch>`

Es una excelente práctica. Yo lo aprendí a la mala con aprox 150 ramas locales. Ahora limpio al finalizar cada sprint.