Si trabajas con metodologías ágiles seguramente te has encontrado con el mismo problema con el que me encontré yo; tu ordenador se llena de ramas que no pretendemos volver a tocar.
En este tipo de workflows es muy común que creemos una rama por cada feature o cambio. Después abrimos un Pull Request a la rama main o staging y cuando nos la aprueban nos quedamos con esa rama abierta de por vida.
La forma tradicional de eliminar una rama es usando el siguiente comando: git branch -d nombre-de-rama. Pero seamos honestos, para que esto fuera viable tendríamos que acordarnos de eliminar la rama una vez nos aprueben la PR. Sin embargo, esto rara vez sucede.
Entonces me puse la tarea de buscar alguna forma de eliminar todas las ramas que ya fueron mergeadas con un solo comando, y acabé diseñando esta solución:
git checkout main
git branch --merged | grep -v "^\*" | grep -v "main" | xargs git branch -d
Importante: Para que este comando funcione de la forma esperada, necesitamos movernos a la rama main y después ejecutarlo.
¿Cómo funciona paso a paso?
Este comando es en realidad una tubería (pipeline) que encadena cuatro herramientas diferentes usando el operador | (pipe). Vamos a desglosarlo:
1. git branch --merged
Le pide a Git un listado de todas las ramas locales que ya han sido fusionadas con la rama en la que te encuentras actualmente. Si estás en main, te mostrará todas las ramas que ya forman parte de la historia de main.
2. grep -v "^\*"
El comando grep busca texto, y la bandera -v significa “invertir selección” (es decir, excluye lo que coincida). Aquí estamos excluyendo la línea que empieza con un asterisco (*), que es la rama en la que estás parado actualmente. Así evitamos intentar borrarnos a nosotros mismos.
3. grep -v "main"
Siguiendo la misma lógica de exclusión, este paso **protege a la rama main** (o master, si es tu caso) de ser listada para eliminación.
💡 Tip: Si tu rama principal se llama
masterodevelop, simplemente cambia"main"por el nombre correspondiente.
4. xargs git branch -d
Aquí ocurre la magia. xargs toma la lista de ramas filtradas que sobrevivieron a los pasos anteriores y se las pasa una por una como argumento al comando git branch -d (borrado seguro).
Usar la -d minúscula es clave: Git se negará a borrar la rama si detecta que contiene cambios que no se han fusionado en ningún lado, dándote una red de seguridad extra.
Conclusión
Incorporar este comando a tu flujo de trabajo (o incluso guardarlo como un alias en tu configuración de Git o terminal) te ahorrará minutos valiosos y mantendrá tu entorno de desarrollo tan limpio como el primer día.