Bitbucket: elimina la cartella dalla cronologia di Git

Esiste un limite massimo di 2 GB per l'hosting di Git su Bitbucket : se questo viene superato, hai solo accesso in sola lettura al repository. Per evitare ciò, ad esempio, rimuovi in ​​modo retroattivo cartelle o file di grandi dimensioni dai tuoi commit. Ma anche in altri casi (se i dati di accesso sono entrati nella cronologia o node_modules è tornato al master), è necessario manipolare retrospettivamente la storia di Git contrariamente alla sua natura.


Bitbucket ha scritto un articolo dettagliato su questo. Per esaminare l'intera cosa in un caso, creiamo prima un nuovo repository:

cronologia bitbucket pulita

Quindi cloniamo il repository in una cartella vuota sul computer locale:

6ab7686fc508ce87c52b10bb5d01ee51

Ora creiamo due sottocartelle con file di contenuto casuale:

6ab7686fc508ce87c52b10bb5d01ee51

Ora stiamo spingendo sul maestro:

6ab7686fc508ce87c52b10bb5d01ee51

Ora abbiamo quasi raggiunto il limite massimo di 2 GB su Bitbucket:

cronologia bitbucket pulita

Possiamo anche verificarlo localmente (vedi "size-pack"):

6ab7686fc508ce87c52b10bb5d01ee51

cronologia bitbucket pulita

Il compito ora è quello di rimuovere retroattivamente "pippo" dal repository per dimezzarne le dimensioni. Per fare ciò, prima modificiamo l'attuale HEAD e scriviamo la cartella in gitignore:

6ab7686fc508ce87c52b10bb5d01ee51

Infine, utilizziamo BFG Repo Cleaner per rimuovere la cartella (BFG richiede un JRE corrente sul sistema come requisito di sistema):

6ab7686fc508ce87c52b10bb5d01ee51

Ora vediamo il risultato localmente:

6ab7686fc508ce87c52b10bb5d01ee51

cronologia bitbucket pulita

Tuttavia, la dimensione del repository non è ancora cambiata su Bitbucket perché il garbage collector non è stato ancora eseguito in remoto e bitbucket non esegue un "git gc" con ogni push:

cronologia bitbucket pulita

Il supporto lo conferma anche:

cronologia bitbucket pulita

Quindi è meglio inviare una richiesta direttamente a support@bitbucket.org per eseguire manualmente "git gc" nel repository. Dopo poco tempo anche il team di supporto ha fatto questo:

cronologia bitbucket pulita

Se ora trascini "di nuovo" il repository su un altro computer, sul disco finiranno solo 0,9 GB. Se qualcuno ha ancora la versione da 1,8 GB disponibile localmente, è sufficiente un "git pull" seguito da "git gc".

Indietro