2011-08-26 48 views
7

Accidentalmente agregué un volcado de base de datos (más de 1 GB) a mi repositorio, lo empujé y lo noté unos días después. Usé git filter-branch para eliminar el archivo, explog reflog y ejecutar git gc para podar objetos no utilizados, pero el blob de volcado de la base de datos todavía está en repositorio. Usé Which commit has this blob?, pero encontré cualquier confirmación que tenga una referencia al blob. ¿Cómo puedo eliminar esto o cómo averiguar por qué no se eliminó durante git gc?Cómo eliminar un blob de git repo

+1

Would http://stackoverflow.com/questions/2116778/reduce-git -repository-size/2116892 # 2116892 ayuda? o http://stackoverflow.com/questions/1029969/why-is-my-git-repository-so-big? – VonC

Respuesta

13

¿A qué comando llamó exactamente al ejecutar git gc?

Nota la página de manual de git gc:

Los controles de configuración opcional gc.pruneExpire variables la edad que los objetos sueltos sin referencia tienen que ser antes de que se podan. El valor por defecto es "Hace 2 semanas"

Así que si su burbuja es menor de 14 días, usted tiene que llamar

git gc --prune=<date> (for date you also can insert now) 
+0

Gracias, no me di cuenta de la opción pruneExpire y no estaba al tanto de que el git mantiene los objetos no amenazados por un tiempo. Anteriormente, ejecuté git gc --prune --aggressive. Ahora, ejecuté git reflog --all --expire = ahora antes de git gc --prune y eliminó el blob. –

0

¿No puedes simplemente hacer rm .git/objects/path/to/blob?

No estoy seguro de por qué git-gc no lo eliminó.

+10

En la votación negativa, ¿pueden todos explicar por qué? Ayuda a todos los que leen sobre un tema a aprender por qué algo es menos deseable o simplemente incorrecto. :) –