2010-05-28 14 views
10

Il mio file .git è cresciuto fino a 229 Mb e mi chiedo quale sia il modo migliore per ridimensionare le dimensioni. Conosco git gc e lo sto usando molto bene. Non sono completamente sicuro di come funziona git, ma so che ci sono informazioni impacchettate che non ho più bisogno. Ad esempio, so che non ho più bisogno dei primi cinque rami salvati. C'è un modo per cancellare completamente rami o commit davvero vecchi o qualcosa del genere?Gestione delle dimensioni del file .git

risposta

14

Se si desidera mantenere il vostro (raggiungibile) impegna la storia intatto, poi scadono, richiuderla, prugna, e la spazzatura raccogliere:

git reflog expire --expire=0 --all 
git repack -ad 
git prune 
git gc 

questa dovrebbe essere la dimensione minima è possibile ottenere la repo e mantenere la vostra storia di commettere.

In caso contrario, se si desidera o non si mente di ricominciare da capo con lo stato corrente del repository come commit iniziale, l'approccio di Peter Tillemans lo farà.

+0

Questo sembra un buon approccio, grazie! – DavidP6

+1

'git gc' esegue automaticamente' git prune', come menzionato in questa pagina di documentazione, sotto l'esempio: https://www.kernel.org/pub/software/scm/git/docs/git-prune.html – kontur

1

Il modo più semplice sarebbe quella di fare un

git clone --depth 1 your_old_repo 

su una nuova posizione e poi scambiare al suo posto.

vedi anche git faq

+0

Il clone poco profondo ha funzionalità limitate, sfortunatamente. –

1

mi piacerebbe fare un po 'di spazzatura raccolta con git gc

+0

Con l'opzione '--prune = ', presumibilmente. – Cascabel

2

Avete alcune tecniche in "Reduce git repository size", ma menziono anche in esso di git gc alone can increase the size of the repo!

Quindi alcuni ramo di filtro (indicato anche in that question) può essere necessario, se nessuno sta prelevando attivamente dal repository.

Un fattore che tende ad aumentare rapidamente la dimensione di un repository Git è il controllo di versione di troppi binari. È uno dei Git limits, quindi cerca di:

  • versione così grande oggetto nel proprio Git repo, riferimento come sottomoduli
  • o loro versione in un repository esterno in spedizione, come un repository Maven (cioè " non in un repository Git ")