git clone è il comando da utilizzare per creare una copia, o clone, di un repository già esistente, in particolare disponibile tramite una connessione di rete.
La clonazione di un repository remoto sulla macchina locale è una operazione una tantum; una volta effettuata la copia locale, non è più necessario eseguire git clone (vedremo più avanti come recuperare le nuove modifiche caricate da altri).
Nella sua versione più semplice, il comando git clone richiede che venga fornita l’URL del repository:
git clone <URL>
L’ URL può essere indicata in diversi formati, a seconda del protocollo offerto dal server che ospita il repository remoto, in particolare:
- SSH – ssh://[user@]host.xz[:port]/path/to/repo.git/
- HTTP – http[s]://host.xz[:port]/path/to/repo.git/
- GIT – git://host.xz[:port]/path/to/repo.git/
In generale, in base al server che ospita il repository in remoto saranno disponibili uno o più protocolli e sarà necessario autenticarsi o fornire le necessarie credenziali.
A titolo d’esempio, se consideriamo un repository ospitato sul famoso servizio GitHub è possibile:
- clonare un repository pubblico con la url HTTP, p.e. git clone https://github.com/php/php-src.git: in questo modo si ottiene una copia “read only”, nel senso che non sarà possibile inviare le proprie eventuali modifiche
- clonare un repository privato con la url HTTP: in questo caso verrà chiesto di inserire il proprio username e la propria password, sarà possibile “scrivere” sul repository remoto
- clonare un repository privato con la url GIT: in questo caso sarà necessario aver configurato prima su GitHub le proprie credenziali SSH (chiavi pubbliche), sarà ovviamente possibile “scrivere” sul repository remoto
Una volta completato, il comando git clone avrà creato nella directory corrente una directory che ospita il clone del repository remoto e avrà creato una connessione chiamata origin che punta al repository remoto originale. Tale connessione verrà usata da altri comandi per inviare e ricevere nuove modifiche dal repository remoto.
Alcune utili opzioni da usare con il comando git clone sono
- clonare in una specifica directory (utile anche per dare uno specifico nome al proprio clone locale:
git clone <URL> <DIRECTORY>
- clonare solo una parte della history dei commit – in questo caso la copia locale è detta shallow clone – per esempio solo gli ultimi 10 commit:
git clone --depth=10 <URL>
- clona solo uno specifico branch presente nel repository remoto:
git clone --single-branch --branch <NAME> <URL>