¿Cómo puedo limpiar todo el historial de git y blobs de files que actualmente no están presentes en HEAD con BFG?

Quiero limpiar todos los blobs y el historial de files que se han eliminado previamente (es decir, ya no están presentes en HEAD), actualmente estoy ejecutando estos commands, pero BFG parece eliminar todos los blobs, incluidos los presentes en HEAD:

git log # Returns 1050 commits git commit -a -m "Clean the old history and blobs with BFG" java -jar bfg.jar --delete-files '*' # Delete all files not in HEAD git log # Still returns 1050 commits, all empty git diff 5458b2^ 5458b2 # Returns 0 change, while it concerns a protected file 

BFG realmente tomó en count los files protegidos en HEAD, como gitignore por ejemplo:

 Protected commits ----------------- These are your protected commits, and so their contents will NOT be altenetworking: * commit 22a1ebd3 (protected by 'HEAD') - contains 1451 dirty files : - .gitignore (813 B) - ... 

Pero se eliminan de todos modos, mientras se supone que están protegidos:

 Deleted files ------------- Filename Git id ---------------------------------------- .gitignore | 091217cf (672 B), 17e3d7c5 (227 B)... 

Finalmente estoy usando esa secuencia de commands para limpiar el repository de files borrados obsoletos. Combina varios pasos de reescritura de twigs y llamada del recolector de elementos no utilizados para limpiar el repository actual.

Logré comprimir un repository pesado de 700MB en un repository nuevo de 4MB. Como de costumbre, duplicar su repository antes de ejecutar este tipo de script, ¡podría provocar la pérdida de datos!

Tal vez puedas probar el siguiente command para eliminar todos los objects inalcanzables.

git prune

o

git gc