Eliminar / contraer el historial de git

Mi repository de git está empezando a ser demasiado grande. En un SSD único, tengo un repository y dos clones con muchos files binarys que ocupan mucho espacio.

Todos los días, un trabajo cron empuja el clon maestro al repository para crear un historial de cambios durante un largo período de time.

Sin embargo, todo lo que tenga más de un mes ya no vale la pena savelo. Me gustaría poder eliminar esos commits antiguos para ahorrar mucho espacio … programáticamente.

He visto muchos ejemplos usando rebase y squash , un par usando gc y algunos otros realmente funky. La mayoría de estos requieren que ingrese manualmente las tags de confirmación que desea eliminar.

Quiero eliminar todas las confirmaciones de más de 30 días de mi repository (supongo que tendré que configurar los ganchos para queuepsar el historial en cualquier otro lugar) todos los meses desde un script bash.

Ok, ¿qué tal esto? Obtiene la primera confirmación y luego inicia la rebase. Simplemente elimine commits a su gusto.

 # Get first commit git log --format=%H | tail -1 | xargs git rebase -i 

árbitro