2011-08-26 22 views
7

Ho accidentalmente aggiunto un db dump (oltre 1 GB) al mio repository, l'ho spinto e notato pochi giorni dopo. Ho usato git filter-branch per cancellare il file, reflog scaduto ed eseguire git gc per sfoltire gli oggetti inutilizzati, ma il bump del dump del database è ancora in repo. Ho usato Which commit has this blob?, ma ho trovato qualsiasi commit che ha un riferimento al blob. Come posso cancellare questo o come scoprire perché non è stato eliminato durante git gc?Come eliminare un BLOB dal repository git

+1

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

risposta

13

Quale comando hai chiamato esattamente durante l'esecuzione di git gc?

Nota la pagina di manuale di git gc:

la configurazione opzionale controlli gc.pruneExpire variabile quanti anni gli oggetti sciolti senza riferimenti devono essere prima di essere potati. L'impostazione predefinita è "2 settimane fa"

Così, se il blob è più giovane di 14 giorni, è necessario chiamare

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

Grazie, non ho notato l'opzione pruneExpire e non ero a conoscenza del fatto che git conserva oggetti non referenziati per un po 'di tempo. Precedentemente, ho eseguito git gc --prune --aggressive. Ora, ho eseguito git reflog --all --expire = ora prima di git gc --prune e ha cancellato il blob. –

0

Non puoi semplicemente fare rm .git/objects/path/to/blob?

Non sono sicuro del motivo per cui git-gc non l'ha eliminato.

+10

In caso di downvoting, tutti possono spiegare perché. Aiuta tutti a leggere su un argomento per imparare perché qualcosa è meno desiderabile o semplicemente sbagliato. :) –

Problemi correlati