Git: Limpieza de ramas antiguas

Voy a ser rápido y conciso.

Este paso a paso intentará explicar como limpiar un repositorio de Git, tanto local como remoto.

En primera instancia nuestro objetivo es limpiar nuestro repo de todas las ramas antiguas que ya se haya hecho merge en master. ¿Cómo hacemos esto?

Ejecutamos


git checkout master

en el repo que queremos limpiar
Miramos cuales son los branches que ya han sido incluidos en master ejecutando


git branch --merged

Luego eliminamos los branches antiguos de nuestro local con


git branch -d old-merged-feature

Ahora, para limpiar el repo remoto tenemos que tener un poco mas de cuidado, porque con la misma técnica podemos eliminar un repo que ya haya sido incluido en master, pero en el que se siga trabajando actualmente, entonces ¿Cómo lo hacemos?
Para saber que repos remotos de master eliminar tenemos que saber 2 cosas, primero si ya han sido incluidos en master y segundo, cuando fue la última vez que se actualizaron. Ejecutando el siguiente comando podrás ver las ramas ya incluidas en master y la última fecha de actualización.


for branch in `git branch -r --merged | grep -v HEAD`; do echo -e `git show --format="%ci %cr %an" $branch | head -n 1` \\t$branch; done | sort -r

En nuestro caso, eliminamos los branches que tienen de 2 a más meses su última actualización. Para finalmente eliminar los branches de remoto, ejecutar


git push origin --delete branch-name

Listo, tenemos nuestro repo local completamente limpio y el repo remoto con una cantidad aceptable de branches.

Aporte original de http://railsware.com/blog/2014/08/11/git-housekeeping-tutorial-clean-up-outdated-branches-in-local-and-remote-repositories/