Tirando de la vieja historia en git repo lleno de binarys

Tengo un repository git con tres años de files binarys de PowerBuilder. El repository es bastante grande (algo less de 10 GB), supongo que debido al hecho de que git solo puede hacer mucho por los deltas binarys.

Me gustaría conseguir este repository a un tamaño manejable, y estoy dispuesto a descartar un montón de historia temprana para hacerlo. No puedo entender cómo hacer que Git lo haga. Traté de aplastar commits con rebase interactivo, pero aparece un montón de conflictos con los que no quiero lidiar.

¿Hay alguna manera de elegir un compromiso, y simplemente tirar todo antes de eso? Me doy count de que reescribirá el SHA-1 para confirmaciones posteriores, lo cual no es problema.

Esta es una (otra) manera:

git fast-export master~5..master | (cd ../newrepo.git && git init . && git fast-import && git checkout) 

El ejemplo anterior tomará commits en el range master~5..master y creará un nuevo repo de eso. Puede usar el mismo repository también, pero lo anterior será más seguro.

Puede volver a establecer la base de todo el espectáculo en una única confirmación.

Algo como

 git rebase -i [some early commit] 

y luego usar el modo de bloque visual en vim para squash, casi todos serían más fáciles, seguidos de fsck y gc run.

Alternativamente, puede usar git filter-branch para eliminar por completo las confirmaciones del tree.