Come pulire la cartella .git e ridurre lo spazio del repository

Cerca

Nel caso in un repository git si stiano gestendo file di grandi dimensioni, come per esempio immagini e video, una loro rimozione in un successivo commit non aiuterà nella riduzione dello spazio occupato.

Siccome git è progettato con la finalità di tenere traccia della storia dei file caricati, questi, in caso di eliminazione non verranno completamente eliminati.

Nella seguente procedura vedremo quindi come eliminare completamente i file dal proprio repository.

Trovare i file più ingombranti nel repository

Utilizziamo il seguente comando per trovare e visualizzare in ordine di dimensione i 10 file che occupano più spazio nel repository. Dove eseguiamo il tail possiamo eventualmente modificare il numero di file che vogliamo elencare.

				
					git rev-list --objects --all | grep -f <(git verify-pack -v .git/objects/pack/*.idx| sort -k 3 -n | cut -f 1 -d " " | tail -10)
				
			

Pulire l'history dai file di grandi dimensione

Per ogni commit, il comando filter-branch riscrive l’history del repository con un filtro. Il seguente comando cancella le immagini (x. es .jpg, .png, .gif) che sono presenti nell’history.

				
					git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch "assets/*.jpg" "assets/*.png" "assets/*.gif"' --prune-empty --tag-name-filter cat -- --all
				
			

Questo comando forza (-f) l’applicazione del filtro (la stringa indicata dopo –index-filter), rimuove i commit vuoti (–prune-empty) riscritti dal filtro e sovrascrive il nome del tag (–tag-name-filter cat) nel nuovo commit per la lista dei commit object (– –all)

Ripulire il repository

Rimuoviamo i log e gli oggetti per i vecchi commit che non sono più referenziati nel commit che abbiamo riscritto.

				
					rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc --aggressive --prune=now
				
			

Aggiornare il repository remoto

Non resta che eseguire il push delle modifiche al server remoto di git.

				
					git push origin --force --all
git push origin --force --tags
				
			

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Most Recent

Come installare Composer su Ubuntu

Composer è il gestore delle dipendenze per PHP. Per installarlo su Ubuntu seguiamo questi semplici passi illustrati qui sotto. Installazione di Composer Per prima cosa

Come realizzare un client NTP in Python

In questo post vediamo come realizzare, utilizzando poche righe di codice, uno script Python che agisca da client NTP. Soluzione 1 In questa prima soluzione

Come avviare UEFI dopo reboot su Linux

L’accesso a UEFI al boot del computer richiede la pressione di un tasto che varia per ogni produttore di hardware. I tasti che più comunemente

Partners