2013-03-25 12 views
9

Ho un progetto con ~ 12 MB di codice e risorse in esso. L'ho tracciato usando Git, e ho appena notato che la mia cartella .git ora ha poco più di 1,83 GB. Consiste di alcuni file di piccole dimensioni e quindi di un solo file pack che costituisce circa 1,82 GB di cartella.Git Repository Too Large

Ho eseguito git gc --aggressive e git gc --prune. È della stessa dimensione. Ho provato:

git reflog expire --expire=now --all 
git repack -ad # Remove dangling objects from packfiles 
git prune  # Remove dangling loose objects 

Ma è ancora la stessa dimensione. L'ho persino clonato (una volta localmente con un repack forzato, e ancora una volta da Git), ma sono ancora 1.83 GB su ciascuno. È normale? C'è un modo per ridurne le dimensioni, o posso semplicemente iniziare un nuovo repository, copiare il codice e accettare che i miei passati commit siano spariti?

+2

Per "beni", intendi cose non comprimibili come immagini ecc.? Hai modificato molto quelli? [Questo] (http://naleid.com/blog/2012/01/17/finding-and-purging-big-files-from-git-history/) sembra essere quello che stai cercando, ma Disclaimer: I non l'hai mai fatto, quindi clonare il repository prima di scherzare con esso: p – Amadan

+5

Commento VCS generale: i file binari (immagini/ZIP ...) vengono solitamente memorizzati come è per ogni versione (a differenza del testo che può essere impacchettato in modo efficace memorizzando diffs) e non può essere compresso (dato che la maggior parte dei formati binari ora sono già compressi) ... Quindi è molto probabile che tu abbia molte versioni di file binari che semplicemente occupano così tanto spazio (vedi se riesci a raccogliere una sorta di statistiche per tipo di file per numero di versioni/dimensioni file) –

+0

Ok, il bit del file binario sembra essere un probabile colpevole. C'è un modo per rimuovere quei file dai commit passati, oltre ad aggiungerli al mio file .gitignore? – Bryce

risposta

10

Ok, i commenti sono stati un ottimo inizio per capire quale fosse la causa principale del problema. Non capisco davvero il comando git filter-branch, quindi ero un po 'diffidente nell'usarlo.

mi sono imbattuto in questo strumento: http://rtyley.github.com/bfg-repo-cleaner/

Ha funzionato a meraviglia. Il mio repository è ora sotto i 10 MB.

+7

Sono l'autore di BFG Repo-Cleaner e la tua risposta mi rende molto felice. –

+1

Grazie! Seriamente, questo strumento è molto più semplice della copia e incolla degli hack casuali di git da tutto il web. – Bryce