git clone

Nous examinerons ici en détail la commande git clone. git clone est un utilitaire de ligne de commande Git utilisé pour cibler un dépôt existant et créer un clone ou une copie du dépôt cible. Sur cette page, nous aborderons les options de configuration étendues et les cas d'usage fréquents de git clone. Voici certains points que nous allons aborder :

  • Clonage d'un dépôt local ou distant
  • Clonage d'un dépôt brut
  • Utilisation d'options superficielles pour cloner partiellement des dépôts
  • Syntaxe URL Git et protocoles pris en charge

Dans le guide de configuration d'un dépôt, nous avons abordé un cas d'usage de base de git clone. Cette page explorera des scénarios de clonage et de configuration plus complexes.

Objectif : copie de développement en collaboration de dépôt à dépôt

Si un projet est déjà configuré dans un dépôt centralisé, la commande git clone est la plus courante pour obtenir une copie de développement. À l'instar de git init, le clonage est généralement une opération ponctuelle. Lorsqu'un développeur obtient une copie de travail, toutes les opérations de contrôle de version et les collaborations sont gérées par l'intermédiaire de son dépôt local.

Collaboration dépôt à dépôt

Il est essentiel de comprendre que le concept de « copie de travail » de Git est très différent de la copie de travail que vous obtenez en extrayant du code à partir d'un dépôt SVN. Contrairement à SVN, Git ne fait aucune distinction entre la copie de travail et le dépôt centralisé. Ce sont des dépôts Git à part entière.

Cela rend la collaboration avec Git fondamentalement différente d'avec SVN. Alors que SVN dépend de la relation entre le dépôt centralisé et la copie de travail, le modèle de collaboration de Git repose sur l'interaction de dépôt à dépôt. Au lieu de checker une copie de travail dans le dépôt centralisé de SVN, vous pouvez faire un push ou un pull des commits d'un dépôt à un autre.

Tutoriel Git : Collaboration dépôt-copie de travail Tutoriel Git : Collaboration dépôt à dépôt

Bien entendu, rien ne vous empêche de donner un sens spécial à certains dépôts Git. Par exemple, en désignant simplement un dépôt Git comme le dépôt « centralisé », il est possible de répliquer un workflow centralisé avec Git. Le fait est que cette opération s'effectue selon des conventions et non par raccordement câblé au logiciel de contrôle de version lui-même.

Utilisation

La commande git clone est principalement utilisée pour indiquer un dépôt existant et cloner ou copier celui-ci dans un nouveau répertoire et un autre emplacement. Le dépôt d'origine peut être situé sur le système de fichiers local ou sur les protocoles pris en charge accessibles depuis la machine distante. La commande git clone copie un dépôt Git existant. C'est un peu comme un checkout SVN, sauf que la « copie de travail » est un dépôt Git à part entière : elle possède son propre historique, gère ses propres fichiers et représente un environnement complètement isolé par rapport au dépôt d'origine.

Pour des raisons pratiques, le clonage crée automatiquement une connexion à distance, appelée « origine », pointant vers le dépôt d'origine. Il est ainsi très facile d'interagir avec un dépôt centralisé. Cette connexion automatique est établie en créant des réfs Git dans les HEADs de branche distantes sous refs/remotes/origin et en initialisant les variables de configuration remote.origin.url et remote.origin.fetch.

Un exemple d'utilisation de git clone est cité dans le guide de configuration d'un dépôt. L'exemple ci-dessous montre comment obtenir une copie locale d'un dépôt centralisé stocké sur un serveur accessible à l'adresse example.com à l'aide du nom d'utilisateur SSH john :

git clone ssh://john@example.com/path/to/my-project.git
cd my-project
# Vous commencez à travailler sur le projet

La première commande initialise un nouveau dépôt Git dans le dossier my-project sur votre machine locale et le remplit avec le contenu du dépôt centralisé. Ensuite, vous pouvez effectuer une commande cd dans le projet et commencer à éditer des fichiers, commiter des instantanés et interagir avec les autres dépôts. Notez également que l'extension .git est omise du dépôt cloné. Cela reflète le statut non brut de la copie locale.

Clonage dans un dossier spécifique

git clone <dépôt> <répertoire>

Clonez le dépôt situé dans <dépôt> dans le dossier appelé ~<répertoire>! sur la machine locale.

Clonage d'un tag spécifique

git clone -branch <tag> <dépôt>

Clonez le dépôt situé dans <dépôt> et clonez uniquement la réf pour <tag>.

Clone superficiel

git clone -depth=1 <dépôt>

Clonez le dépôt situé dans <dépôt> et clonez uniquement l'historique des commits 
spécifié par l'option depth=1. Dans cet exemple, un clone de <dépôt> est effectué, et seul le commit le plus récent est inclus dans le nouveau dépôt cloné. Le clonage superficiel est très utile lorsque vous utilisez des dépôts qui présentent un historique étendu des commits. Un historique étendu des commits peut entraîner des problèmes de déploiement, comme des limites d'utilisation de l'espace disque et de longs temps d'attente lors du clonage. Un clone superficiel permet de réduire ces problèmes de déploiement.

Options de configuration

git clone -branch

L'argument -branch vous permet d'indiquer une branche spécifique à cloner au lieu de la branche vers laquelle l'élément HEAD distant pointe, généralement la branche master. En outre, vous pouvez transmettre un tag au lieu d'une branche pour obtenir le même résultat.

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

L'exemple ci-dessus clonerait uniquement la branche new_feature du dépôt Git distant. Il s'agit uniquement d'un utilitaire pratique qui vous fera gagner du temps, au lieu de télécharger la réf HEAD du dépôt, puis de devoir encore fetcher la réf dont vous avez besoin.

git clone -mirror et git clone -bare

git clone --bare

Tout comme avec git init --bare, si l'argument -bare est transmis à git clone, une copie du dépôt distant sera effectuée avec un répertoire de travail omis. Cela signifie qu'un dépôt sera configuré avec l'historique du projet qui peut être pushé et importé, mais ne peut pas être édité directement. En outre, aucune branche distante pour le dépôt ne sera configurée avec le dépôt -bare. Comme git init --bare, il est utilisé pour créer un dépôt hébergé que les développeurs n'éditeront pas directement.

git clone --mirror

Transmettre l'argument --mirror transmet implicitement l'argument --bare en même temps. Cela implique que le comportement de --bare est hérité par --mirror. Le résultat : un dépôt vide sans aucun fichier de travail éditable. De plus, --mirror clonera toutes les réfs étendues du dépôt distant et conservera la configuration de suivi de la branche distante. Vous pouvez ensuite exécuter la mise à jour git remote sur le miroir. Elle écrasera toutes les réfs du dépôt d'origine. Vous disposerez d'une fonctionnalité « en miroir » précise.

Autres options de configuration

Pour obtenir la liste complète des autres options git clone, consultez la documentation Git officielle. Dans ce document, nous verrons d'autres options fréquentes.

git clone --template

git clone --template=<répertoire_modèles> <emplacement_dépôt>

Clone le dépôt dans <emplacement_dépôt> et applique le modèle depuis <répertoire_modèles> à la branche locale nouvellement créée. Pour en savoir plus sur les modèles Git, consultez notre page git init.
 

URL Git

Git dispose de sa propre syntaxe URL utilisée pour transmettre les sites de dépôt distants aux commandes Git. Étant donné que git clone est le plus souvent utilisé sur les dépôts distants, nous examinerons la syntaxe URL Git ici.
 

Protocoles URL Git

-SSH

Secure Shell (SSH) est un protocole réseau authentifié omniprésent fréquemment configuré par défaut sur la plupart des serveurs. Étant donné que SSH est un protocole authentifié, vous devrez définir les informations d'authentification auprès du serveur d'hébergement avant de vous connecter. ssh://[utilisateur@]hôte.xz[:port]/chemin/dépôt.git/
 

- GIT
 

Un protocole unique à Git. Git est fourni avec un démon qui s'exécute sur le port (9418). Le protocole est similaire à SSH, mais n'utilise PAS D'AUTHENTIFICATION. git://host.xz[:port]/path/to/repo.git/
 

- HTTP
 

Protocole de transfert hypertexte. Le protocole Web le plus souvent utilisé pour transférer des données HTML de pages Web via Internet. Git peut être configuré pour communiquer via HTTP http[s]://host.xz[:port]/path/to/repo.git/
 

Summary

Dans ce document, nous avons examiné en profondeur git clone. Retenons principalement :

1. git clone permet de créer une copie d'un dépôt cible

2. Le dépôt cible peut être local ou distant.

3. Git prend en charge quelques protocoles réseau pour se connecter aux dépôts distants

4. Plusieurs options de configuration différentes sont disponibles pour changer le contenu du clone.
 

Pour en savoir plus sur la fonctionnalité git clone, consultez la documentation Git officielle. Nous fournissons également des exemples pratiques de git clone dans notre guide de configuration d'un dépôt.

 

Prêt à découvrir Git ?

Essayez ce tutoriel interactif.

Démarrez maintenant