Come utilizzare Git Shallow Clone per una clonazione più rapida del repository

I repository Git di grandi dimensioni possono utilizzare molte risorse e rallentare il tuo computer. Questo a volte può essere mitigato utilizzando la clonazione superficiale, che elimina tutti tranne i commit più recenti, rendendo più semplice il download di repository Git con lunghe cronologie.

Che cos'è la clonazione superficiale?

La clonazione di un repository non solo crea una copia dell'intero repository, ma anche la cronologia completa dei commit. Per la maggior parte dei repository, la dimensione complessiva e la lunghezza della cronologia dei commit non sono un problema. Tuttavia, per repository molto grandi, la clonazione di tutti quei dati può richiedere molto tempo e risorse.

Ad esempio, il kernel Linux ha utilizzato lo stesso repository sin dall'alba dei tempi. Ha oltre 1,1 milioni di commit. La clonazione può richiedere fino a un'ora su hardware meno recente e utilizzare più gigabyte di RAM solo per il solo processo Git. Ovviamente non tutti i repository sono così enormi, ma alcuni ci si avvicinano e persino i contributori del kernel Linux non vogliono sedersi alla tastiera per un'ora a guardarlo clonare.

La clonazione superficiale è una tecnica che recupera solo un numero limitato di commit recenti. Ciò si traduce in un clone leggero e più veloce che conserva ancora le funzionalità necessarie per il tuo lavoro, poiché alla maggior parte delle persone non interessano i commit precedenti e puoi comunque inviare PR e inviare modifiche senza l'intera cronologia.

< p>Ciò ha anche grandi vantaggi per le pipeline di integrazione continua (CI/CD), poiché il server di compilazione probabilmente non ha bisogno di conoscere l'intera cronologia Git solo per creare l'applicazione. Se stai scrivendo script che funzionano con i repository Git e ti interessa solo il contenuto, potrebbe valere la pena usare invece la clonazione superficiale.

RELATEDCome clonare un repository GitHub

Oltre al solo tempo di clonazione, i repository superficiali vengono eseguiti più velocemente in generale, poiché c'è meno cronologia da elaborare durante l'esecuzione dei comandi quotidiani. Le cronologie molto lunghe possono anche causare ritardi nei client Git della GUI, il che può rovinare l'esperienza.

Clonazione poco profonda di un repository Git

Il modo più semplice per clonare in modo superficiale è semplicemente usare il parametro –depth su git clone. Ciò limiterà il clone a un certo numero, come 100 commit prima dell'attuale repository HEAD. Tutti gli altri commit precedenti verranno troncati dalla cronologia.

git clone –depth 100 [repository_URL]

Puoi anche clonare tutto in modo superficiale dopo una certa data, il che è molto più utile se non lo fai sapere di quanti commit hai bisogno.

git clone –shallow-since=”3 months” [repository_URL]

Il parametro date può accettare molti formati diversi, ma un semplice “X anni/mesi fa& #8221; generalmente funziona bene.

Esistono anche metodi per semplificare un repository Git esistente, ma di solito sono disordinati e implicano la riscrittura della cronologia e la cancellazione manuale di tutti i vecchi oggetti dalla cache di raccolta dei rifiuti di Git. Ti consigliamo di eseguire il push di tutte le modifiche, rimuovere il vecchio repository e clonare nuovamente dal telecomando se desideri ridurre le dimensioni del repository esistente.

Shallow Clonazione di un solo ramo

La clonazione superficiale può essere combinata con un'altra funzionalità di Git che limita il clone a un solo ramo. Se stai solo scaricando un repository per controllare un feature branch, puoi invece eseguire questo comando:

git clone –depth 100 [repository_URL] –single-branch –branch=[branch] < h2 role="heading" aria-level="2">Cloni blobless e treeless

Un'altra opzione simile che può ancora preservare la cronologia dei commit è l'utilizzo di cloni blobless. In Git, il contenuto effettivo del file viene memorizzato come “blob,” e Git aggiunge in cima a questi alberi e commit che tengono traccia di come quei BLOB vanno insieme.

I quadrati sono blob, i triangoli sono alberi e i cerchi sono i commit rivolti all'utente che puntano a tutto.

Poiché Git si preoccupa principalmente solo dei commit e della struttura ad albero, puoi scegliere di omettere i BLOB e scaricarli su richiesta quando sono necessari. Ciò può accelerare notevolmente i tempi di clonazione mantenendo anche la cronologia. Puoi anche combinare cloni blobless e shallow.

Per fare ciò, esegui git clone con un set di filtri:

git clone –filter=blob:none [repository_URL]

I cloni treeless sono simili e spesso usati per l'automazione, ma in genere non sono consigliati per l'uso quotidiano poiché possono effettivamente essere più lenti per le operazioni Git quotidiane.

git clone –filter=tree:0 [repository_URL]

In genere, tuttavia, superficiale i cloni saranno ancora più veloci e i cloni senza blob aumenteranno di dimensioni nel tempo man mano che è necessario accedere a più parti del repository.

LEGGI SUCCESSIVO

  • › Come risolvere “Impossibile contattare il server di ripristino” Errore Mac
  • › Le app Microsoft 365 ottengono un nuovo carattere predefinito
  • › Windows 11 dice addio alle vecchie app ARM
  • › Google Bard AI ha nuove funzionalità e lingue supportate
  • › NotebookLM di Google è un punto di svolta per prendere appunti
  • › 1Password sta velocizzando il tuo processo di accesso

Posted

in

by

Tags: