Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git clone [--branch <name>] [--depth <n>] [--recurse-submodules] <url> [directory]

Descrizione

Il comando git clone copia un repository esistente (tipicamente da un server remoto) in una nuova directory locale. Esegue tre azioni: crea una nuova directory, esegue git init al suo interno, e poi scarica tutti i branch e la storia dal remote. Dopo il clone, il remote viene configurato automaticamente come origin, e il branch predefinito viene checkoutato nella working tree.

Il cloning supporta più protocolli: HTTPS (il più comune, più facile con i credential helper), SSH (preferito per accesso in scrittura usando auth basata su chiave) e il protocollo legacy git://. Per repository molto grandi, partial clone, shallow clone e sparse checkout possono ridurre drasticamente la quantità di dati trasferiti.

L'autenticazione è uno degli ostacoli più comuni. Con HTTPS, Git moderno usa credential helper (Keychain su macOS, Credential Manager su Windows, libsecret su Linux) per cachare token o password in sicurezza. Con SSH, il tuo SSH agent locale fornisce la chiave — assicurati che ssh-add l'abbia caricata. Dopo il clone, git config --get remote.origin.url conferma cosa è stato effettivamente configurato. Per repository su scala monorepo o supercomputer, partial clone (--filter=blob:none) combinato con sparse checkout (git sparse-checkout init --cone) ti permette di lavorare con solo una fetta del progetto, riducendo drasticamente sia il tempo di clone che lo spazio su disco. Le pipeline CI beneficiano ulteriormente di --depth=1 e --no-tags quando non hanno bisogno della storia.

Opzioni comuni

OpzioneDescrizione
--branch <name> / -bFa checkout del branch o tag specificato invece del default.
--depth <n>Crea un clone shallow con storia troncata.
--single-branchClona solo la storia di un singolo branch.
--recurse-submodulesInizializza e clona i submodule subito dopo il clone principale.
--filter=blob:noneCrea un partial clone senza contenuto blob (scaricato pigramente al bisogno).
--bareCrea un clone bare senza working tree.
--mirrorConfigura un mirror con tutti i ref, adatto per i backup.

Esempi

git clone https://github.com/user/project.git
# Clone standard su HTTPS

git clone [email protected]:user/project.git my-fork
# Clone via SSH in una directory specifica

git clone --depth 1 --branch v2.0 https://github.com/user/project.git
# Clone shallow di un tag specifico, utile per CI

git clone --filter=blob:none https://github.com/torvalds/linux.git
# Partial clone per repo enormi — blob scaricati al bisogno

Errori comuni

Clonare un repository gigante senza filtri può richiedere minuti o ore e consumare gigabyte. Per esplorazione o build CI, preferisci --depth 1. Un altro errore è clonare via HTTPS quando intendi pushare modifiche — senza setup delle credenziali, ogni push richiederà una password. Usa SSH o un credential helper per accesso in scrittura. Infine, sappi che i clone --single-branch non possono accedere facilmente ad altri branch senza riconfigurare il remote.

Comandi correlati

git init, git fetch, git remote, git submodule