Close

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 faisant un check-out du code source à partir d'un dépôt SVN. Contrairement à SVN, Git ne fait aucune distinction entre les copies 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.

branche git
Ressource connexe

branche git

Logo Bitbucket
DÉCOUVRIR LA SOLUTION

Découvrir Git avec Bitbucket Cloud

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 
# Start working on the project

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 l'état non brut de la copie locale.

Clonage dans un dossier spécifique

git clone <repo> <directory>

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

Clonage d'un tag spécifique

git clone --branch <tag> <repo>

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

Clone superficiel

git clone -depth=1 <repo>

Clonez le dépôt situé dans <repo> et clonez uniquement l'historique des commits spécifié par l'option depth=1. Dans cet exemple, un clone de <repo> 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 principale. En outre, vous pouvez transmettre un tag au lieu d'une branche pour obtenir le même résultat.

git clone --branch

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=<template_directory> <repo location>

Clone le dépôt situé dans <repo location> et applique le modèle de <template directory> à 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 d'URL utilisée pour transmettre les emplacements de dépôts distants aux commandes Git. Étant donné que la commande git clone est le plus souvent utilisée sur les dépôts distants, nous examinerons la syntaxe d'URL Git ici.

Protocoles URL Git

'-SSH

Secure Shell (SSH) est un protocole réseau authentifié omniprésent, qui est 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://[user@]host.xz[:port]/path/to/repo.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/

Résumé


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.


Partager cet article
Thème suivant

Lectures recommandées

Ajoutez ces ressources à vos favoris pour en savoir plus sur les types d'équipes DevOps, ou pour les mises à jour continues de DevOps chez Atlassian.

Des personnes qui collaborent à l'aide d'un mur rempli d'outils

Le blog Bitbucket

Illustration DevOps

Parcours de formation DevOps

Démos Des démos avec des partenaires d'Atlassian

Fonctionnement de Bitbucket Cloud avec Atlassian Open DevOps

Inscrivez-vous à notre newsletter DevOps

Thank you for signing up