Accidentalmente agregué, comprometí y empujé un gran archivo binario con mi último compromiso con un repositorio de Git.¿Cómo eliminar objetos no utilizados de un repositorio de git?
¿Cómo puedo hacer que Git elimine los objetos que fueron/fueron creados para esa confirmación, por lo que mi directorio .git
vuelve a tener un tamaño razonable?
Editar: Gracias por sus respuestas; Intenté varias soluciones. Ninguno funcionó. Por ejemplo el de GitHub elimina los archivos de la historia, pero el tamaño del directorio .git
no ha disminuido:
$ BADFILES=$(find test_data -type f -exec echo -n "'{}' " \;)
$ git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch $BADFILES" HEAD
Rewrite 14ed3f41474f0a2f624a440e5a106c2768edb67b (66/66)
rm 'test_data/images/001.jpg'
[...snip...]
rm 'test_data/images/281.jpg'
Ref 'refs/heads/master' was rewritten
$ git log -p # looks nice
$ rm -rf .git/refs/original/
$ git reflog expire --all
$ git gc --aggressive --prune
Counting objects: 625, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (598/598), done.
Writing objects: 100% (625/625), done.
Total 625 (delta 351), reused 0 (delta 0)
$ du -hs .git
174M .git
$ # still 175 MB :-(
Sólo un recordatorio para los moderadores, esta pregunta 100% pertenece el SO, no superusuario – VonC
Vea también http://stackoverflow.com/questions/2116778/reduce-git-repository-size/2116892#2116892 y http://stackoverflow.com/questions/685319/git-pull-error-unable-to-create -temporary-sha1-filename/685422 # 685422 – VonC
Como se menciona aquí (http://stackoverflow.com/questions/685319/git-pull-error-unable-to-create-temporary-sha1-filename/685422#685422), ¿Has probado un nuevo empaque después de tu GC? 'git-reeck -a' seguido por' git-prune-packed' por ejemplo. Ver http://blog.felipebalbi.com/2007/12/19/housekeeping-your-git-repository/ – VonC