git clone

In questa sezione esamineremo a fondo il comando git clone. git clone è un'utilità della riga di comando Git che viene utilizzata per indirizzare un repository esistente e creare un clone o una copia del repository di destinazione. In questa pagina parleremo delle opzioni di configurazione estese e dei casi d'uso comuni di git clone. Alcuni punti che tratteremo sono:

  • Clonazione di un repository locale o remoto
  • Clonazione di un repository bare
  • Utilizzo di opzioni minime per la clonazione parziale dei repository
  • Protocolli supportati e sintassi URL Git

Nella sezione sulla configurazione di una guida al repository, abbiamo esaminato un caso d'uso di base di git clone. In questa pagina analizzeremo scenari di clonazione e configurazione più complessi.

Scopo: copia di sviluppo della collaborazione da repository a repository

Se un progetto è già stato configurato in un repository centrale, il comando git clone è il modo più comune tramite cui gli utenti possono ottenere una copia di sviluppo. Come con git init, la clonazione è generalmente un'operazione una tantum. Una volta che uno sviluppatore ha ottenuto una copia di lavoro, tutte le operazioni di controllo della versione e le collaborazioni vengono gestite tramite il proprio repository locale.

Collaborazione da repository a repository

È importante comprendere che l'idea di Git di "copia di lavoro" è molto diversa dalla copia di lavoro che si ottiene estraendo il codice da un repository SVN. A differenza di SVN, Git non fa distinzione tra la copia di lavoro e il repository centrale: sono entrambi repository Git a tutti gli effetti.

Ciò rende la collaborazione con Git fondamentalmente diversa da quella con SVN. Mentre SVN dipende dalla relazione tra il repository centrale e la copia di lavoro, il modello di collaborazione di Git si basa sull'interazione tra repository e repository. Invece di inserire una copia di lavoro nel repository centrale di SVN, si esegue il push o il pull dei commit da un repository all'altro.

Tutorial su Git: collaborazione da repository a copia di lavoro Tutorial su Git: collaborazione da repository a repository

Naturalmente, non c'è niente che ti impedisca di dare un significato speciale a determinati repository Git. Ad esempio, semplicemente designando un repository Git come repository "centrale", è possibile replicare un flusso di lavoro centralizzato utilizzando Git. Il punto è che ciò viene realizzato attraverso convenzioni piuttosto che essere integrato in VCS stesso.

Utilizzo

git clone viene utilizzato principalmente per puntare a un repository esistente e creare un clone o una copia di tale repository in una nuova directory, in un'altra posizione. Il repository originale può trovarsi sul filesystem locale o su protocolli supportati accessibili dal computer remoto. Il comando git clone copia un repository Git esistente. È un po' come il processo di estrazione di SVN, ad eccezione del fatto che la "copia di lavoro" è un repository Git a tutti gli effetti: ha la sua cronologia, gestisce i propri file ed è un ambiente completamente isolato dal repository originale.

Per comodità, la procedura di clonazione crea automaticamente una connessione remota chiamata" origine" che punta al repository originale. In questo modo è molto facile interagire con un repository centrale. Questa connessione automatica viene stabilita creando riferimenti Git alla base del branch remoto in refs/remotes/origin e inizializzando le variabili di configurazione remote.origin.url e remote.origin.fetch.

È possibile trovare un esempio che dimostra l'utilizzo di git clone nella guida alla configurazione di un repository. L'esempio seguente mostra come ottenere una copia locale di un repository centrale archiviato su un server accessibile su example.com utilizzando il nome utente SSH john:

git clone ssh://john@example.com/path/to/my-project.git 
cd my-project 
# Start working on the project

Il primo comando inizializza un nuovo repository Git nella cartella my-project sul computer locale e lo popola con il contenuto del repository centrale. Quindi, puoi avviare cd nel progetto e iniziare a modificare i file, eseguire il commit delle snapshot e interagire con altri repository. Osserva inoltre che l'estensione .git viene omessa dal repository clonato. Ciò riflette lo stato non-bare della copia locale.

Clonazione in una cartella specifica

git clone <repo> <directory>

Clona il repository che si trova in nella cartella chiamata ~ sul computer locale.

Clonazione di un tag specifico

git clone --branch <tag> <repo>

Clona il repository che si trova in e clona solo il riferimento per .

Clonazione minima

git clone -depth=1 <repo>

Clona il repository che si trova in e clona solo la
cronologia dei commit specificati dall'opzione depth=1. In questo esempio viene creato un clone di e solo il commit più recente è incluso nel nuovo repository clonato. La clonazione minima è utile soprattutto quando si lavora con repository con una lunga cronologia di commit. Una cronologia di questo tipo può causare problemi di ridimensionamento, come limiti di utilizzo dello spazio su disco e lunghi tempi di attesa durante la clonazione. La clonazione minima può aiutare a mitigare questi problemi di ridimensionamento.

Opzioni di configurazione

git clone -branch

L'argomento -branch consente di specificare un branch specifico da clonare invece del branch a cui punta l'HEAD remoto, di solito il branch principale. Inoltre, puoi inviare un tag invece di un branch per ottenere lo stesso effetto.

git clone -branch new_feature git://remoterepository.git

L'esempio riportato sopra clona solo il branch new_feature dal repository Git remoto. Si tratta di un'utilità di pura praticità che ti consente di risparmiare il tempo impiegato per scaricare il riferimento HEAD del repository e per dover quindi recuperare inoltre il riferimento di cui hai bisogno.

Confronto tra git clone -mirror e git clone -bare

git clone --bare

Analogamente a git init --bare, quando l'argomento -bare viene inviato a git clone, una copia del repository remoto verrà creata con una directory di lavoro omessa. Ciò significa che verrà configurato un repository con la cronologia del progetto di cui può essere eseguito il push e il pull, ma che non può essere modificata direttamente. Inoltre, nessun branch remoto del repository verrà configurato con il repository -bare. Come con git init --bare, ciò viene utilizzato per creare un repository ospitato che gli sviluppatori non modificheranno direttamente.

git clone --mirror

Quando viene inviato l'argomento --mirror, viene inviato implicitamente anche l'argomento --bare. Ciò significa che il comportamento di --bare è ereditato da --mirror. Il risultato è un repository bare senza file di lavoro modificabili. Inoltre, --mirror clonerà tutti i riferimenti estesi del repository remoto e manterrà la configurazione di monitoraggio del branch remoto. È quindi possibile eseguire l'aggiornamento git remote sul mirror che sovrascriverà tutti i riferimenti dal repository di origine, creando l'esatta funzionalità con mirroring.

Altre opzioni di configurazione

Per un elenco completo delle altre opzioni di git clone , visita la documentazione ufficiale di Git. In questo documento accenneremo alcune altre opzioni comuni.

git clone --template

git clone --template=<template_directory> <repo location>

Clona il repository in e applica il modello da