Section courante

A propos

Section administrative du site

git clone

Clone
Git

Syntaxe

git clone [--template=template_directory] [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror] [-o name] [-b name] [-u upload-pack] [--reference repository] [--dissociate] [--separate-git-dir git dir] [--depth depth] [--[no-]single-branch] [--no-tags] [--recurse-submodules[=pathspec]] [--[no-]shallow-submodules] [--[no-]remote-submodules] [--jobs n] [--sparse] [--filter=filter] [--] repository [directory]

Paramètres

Nom Description
directory Ce paramètre permet d'indiquer le nom d'un nouveau répertoire dans lequel cloner. La partie humaniste du référentiel source est utilisée si aucun répertoire n'est explicitement donné (dépôt pour /path/to/repo.git et gladir pour host.xz:gladir/.git). Le clonage dans un répertoire existant n'est autorisé que si le répertoire est vide.
repository Ce paramètre permet d'indiquer le référentiel (éventuellement à distance) à partir duquel cloner.
-b name Ce paramètre permet de pointer vers la branche spécifié. Au lieu de pointer le HEAD nouvellement créé vers la branche pointée par le HEAD du référentiel cloné, pointez plutôt sur la branche name. Dans un référentiel non bare, c'est la branche étant extraite. Le --branch peut également prendre des balises et détacher le HEAD à ce commit dans le référentiel résultant.
--bare Ce paramètre permet de créer un référentiel de bare de Git. Autrement dit, au lieu de créer directory et de placer les fichiers administratifs dans directory/.git, ild faites du directory lui-même le $GIT_DIR. Cela implique évidemment le --no-checkout car il n'y a nulle part où vérifier l'arbre de travail. De plus, les têtes de branche de la piste à distance sont copiées directement sur les têtes de branche locales correspondantes, sans les cartographier à refs/remotes/origin/. Lorsque ce paramètre est utilisée, ni les branches de suivi à distance ni les variables de configuration associées ne sont créées.
--branch name Ce paramètre permet de pointer vers la branche spécifié. Au lieu de pointer le HEAD nouvellement créé vers la branche pointée par le HEAD du référentiel cloné, pointez plutôt sur la branche name. Dans un référentiel non bare, c'est la branche étant extraite. Le --branch peut également prendre des balises et détacher le HEAD à ce commit dans le référentiel résultant.
-c key=value Ce paramètre permet de définir une variable de configuration dans le référentiel nouvellement créé; cela prend effet immédiatement après l'initialisation du référentiel, mais avant la récupération de l'historique à distance ou l'extraction de tous les fichiers. La clef est dans le même format que celui attendu par git-config (par exemple, core.eol=true). Si plusieurs valeurs sont données pour la même clef, chaque valeur sera écrite dans le fichier de configuration. Cela permet, par exemple, d'ajouter en toute sécurité des références de récupération supplémentaires à l'origine à distance. En raison des limitations de la mise en oeuvre actuelle, certaines variables de configuration ne prennent effet qu'après la récupération et l'extraction initiales. Les variables de configuration connues pour ne pas prendre effet sont : remote.name.mirror et remote.name.tagOpt. Utilisez plutôt les options --mirror et --no-tags correspondantes.
--config key=value Ce paramètre permet de définir une variable de configuration dans le référentiel nouvellement créé; cela prend effet immédiatement après l'initialisation du référentiel, mais avant la récupération de l'historique à distance ou l'extraction de tous les fichiers. La clef est dans le même format que celui attendu par git-config (par exemple, core.eol=true). Si plusieurs valeurs sont données pour la même clef, chaque valeur sera écrite dans le fichier de configuration. Cela permet, par exemple, d'ajouter en toute sécurité des références de récupération supplémentaires à l'origine à distance. En raison des limitations de la mise en oeuvre actuelle, certaines variables de configuration ne prennent effet qu'après la récupération et l'extraction initiales. Les variables de configuration connues pour ne pas prendre effet sont : remote.name.mirror et remote.name.tagOpt. Utilisez plutôt les options --mirror et --no-tags correspondantes.
--depth depth Ce paramètre permet de créer un clone superficiel avec un historique tronqué au nombre spécifié de validations. Implique --single-branch sauf si --no-single-branch est donné pour récupérer les historiques près des extrémités de toutes les branches. Si vous souhaitez cloner des sous-modules de manière superficielle, passez également --shallow-submodules.
--dissociate Ce paramètre permet d'emprunter les objets à partir des référentiels de référence spécifiés avec les paramètres --reference uniquement pour réduire le transfert réseau, et arrêtez de leur emprunter après qu'un clone est effectué en faisant les copies locales nécessaires des objets empruntés. Ce paramètre peut également être utilisée lors du clonage local à partir d'un référentiel empruntant déjà des objets à un autre référentiel - le nouveau référentiel empruntera des objets au même référentiel, et ce paramètre peut être utilisée pour arrêter l'emprunt.
--filter=filter-spec Ce paramètre permet d'utiliser la fonction de clonage partiel et de demander que le serveur envoie un sous-ensemble d'objets accessibles en fonction d'un filtre d'objet donné. Lorsque vous utilisez --filter, le filter-spec fourni est utilisé pour le filtre de clonage partiel. Par exemple, --filter=blob:none filtrera tous les blobs (contenu du fichier) jusqu'à ce que Git en ait besoin. De plus, «--filter=blob:limit=size» filtrera tous les blobs de taille au moins size.
-j n Ce paramètre permet d'indiquer le nombre de sous-modules récupérés en même temps. Par défaut, l'option submodule.fetchJobs.
--jobs n Ce paramètre permet d'indiquer le nombre de sous-modules récupérés en même temps. Par défaut, l'option submodule.fetchJobs.
-l Ce paramètre permet d'effectuer une clonage à partir d'une machine locale. Lorsque le référentiel à partir duquel cloner est sur une machine locale, ce drapeau contourne le mécanisme de transport normal «Git aware» et clone le référentiel en faisant une copie de HEAD et de tout ce qui se trouve sous les répertoires objets et refs. Les fichiers sous le répertoire .git/objects/ sont liés en dur pour économiser de l'espace lorsque cela est possible. Si le référentiel est spécifié comme un chemin local (par exemple, /path/to/repo), c'est la valeur par défaut, et --local est essentiellement un no-op. Si le référentiel est spécifié en tant qu'URL, ce drapeau est ignoré (et il n'utilisera jamais les optimisations locales). Spécifier --no-local remplacera la valeur par défaut lorsque /path/to/repo est donné, en utilisant le transport Git normal à la place.
--local Ce paramètre permet d'effectuer une clonage à partir d'une machine locale. Lorsque le référentiel à partir duquel cloner est sur une machine locale, ce drapeau contourne le mécanisme de transport normal «Git aware» et clone le référentiel en faisant une copie de HEAD et de tout ce qui se trouve sous les répertoires objets et refs. Les fichiers sous le répertoire .git/objects/ sont liés en dur pour économiser de l'espace lorsque cela est possible. Si le référentiel est spécifié comme un chemin local (par exemple, /path/to/repo), c'est la valeur par défaut, et --local est essentiellement un no-op. Si le référentiel est spécifié en tant qu'URL, ce drapeau est ignoré (et il n'utilisera jamais les optimisations locales). Spécifier --no-local remplacera la valeur par défaut lorsque /path/to/repo est donné, en utilisant le transport Git normal à la place.
--mirror Ce paramètre permet de configurer un miroir du référentiel source. Cela implique -nu. Comparé à --bare, le paramètre --mirror ne cartographie pas seulement les branches locales de la source aux branches locales de la cible, il cartographie toutes les références (y compris les branches de suivi à distance, les notes,...) et met en place une configuration refspec telle que toutes ces références sont écrasés par un git remote update dans le référentiel cible.
-n Ce paramètre permet d'indiquer qu'aucune vérification de HEAD n'est effectuée une fois le clonage terminé.
--[no-]single-branch Ce paramètre permet de cloner uniquement l'historique menant à la pointe d'une seule branche, soit spécifié par le paramètre --branch, soit par HEAD de la branche principale à distance. Les extractions ultérieures dans le référentiel résultant ne mettront à jour que la branche de suivi à distance pour la branche que ce paramètre a été utilisée pour le clonage initial. Si le HEAD à distance ne pointait sur aucune branche lors du clonage --single-branch, aucune branche de suivi à distance n'est créée.
--no-checkout Ce paramètre permet d'indiquer qu'aucune vérification de HEAD n'est effectuée une fois le clonage terminé.
--no-hardlinks Ce paramètre permet de forcer le processus de clonage à partir d'un référentiel sur un système de fichiers local à copier les fichiers sous le répertoire .git/objects au lieu d'utiliser des liens physiques. Cela peut être souhaitable si vous essayez de faire une sauvegarde de votre référentiel.
--[no-]remote-submodules Ce paramètre permet d'indiquer que tous les sous-modules clonés utiliseront leur branche de suivi à distance. Tous les sous-modules étant clonés utiliseront l'état de la branche de suivi à distance du sous-module pour mettre à jour le sous-module, plutôt que le SHA-1 enregistré du superprojet. Équivaut à passer --remote à la mise à jour du sous-module git.
--[no-]shallow-submodules Ce paramètre permet d'indiquer que tous les sous-modules étant clonés seront peu profonds avec une profondeur de 1.
--no-tags Ce paramètre permet d'indiquer qu'il ne faut cloner aucune balise et définir remote.remote.tagOpt=--no-tags dans la configuration, garantissant que les futures opérations git pull et git fetch ne suivront aucune tags. Les récupérations de tags explicites suivantes continueront de fonctionner. Peut être utilisé en conjonction avec --single-branch pour cloner et maintenir une branche sans référence autre qu'une seule branche clonée. Il est utile, par exemple, pour conserver des clones minimaux de la branche par défaut de certains référentiels pour l'indexation de la recherche.
-o name Ce paramètre permet d'obliger à utiliser l'origine du nom à distance pour suivre le référentiel en amont avec le name spécifié. Remplace clone.defaultRemoteName du fichier de configuration.
--origin name Ce paramètre permet d'obliger à utiliser l'origine du nom à distance pour suivre le référentiel en amont avec le name spécifié. Remplace clone.defaultRemoteName du fichier de configuration.
--progress Ce paramètre permet de demander d'afficher l'état de progression. L'état de progression est signalé par défaut sur le flux d'erreur standard lorsqu'il est connecté à un terminal, sauf si --quiet est spécifié. Ce paramètre force l'état d'avancement même si le flux d'erreur standard n'est pas dirigé vers un terminal.
-q Ce paramètre permet d'effectuer les opérations silencieusement. La progression n'est pas signalée dans le flux d'erreur standard.
--quiet Ce paramètre permet d'effectuer les opérations silencieusement. La progression n'est pas signalée dans le flux d'erreur standard.
--recurse-submodules[=pathspec] Ce paramètre permet d'initialiser les sous-modules dans le clone. Une fois le clone créé, initialisez et clonez les sous-modules à l'intérieur en fonction de la spécification de chemin fournie. Si aucun pathspec n'est fourni, tous les sous-modules sont initialisés et clonés. Ce paramètre peut être donnée plusieurs fois pour les pathspecs composés de plusieurs entrées. Le clone résultant a submodule.active défini sur le pathspec fourni, ou "." (signifiant tous les sous-modules) si aucune spécification de chemin n'est fournie. Les sous-modules sont initialisés et clonés en utilisant leurs paramètres par défaut. Cela équivaut à exécuter «git submodule update --init --recursive pathspec» immédiatement après la fin du clone. Ce paramètre est ignorée si le référentiel cloné n'a pas d'arbre de worktree/checkout (c'est-à-dire si l'un des éléments --no-checkout/-n, --bare ou --mirror est donné).
--reference[-if-able] repository Ce paramètre permet d'indiquer la référence. Si le référentiel de référence se trouve sur la machine locale, configurez automatiquement .git/objects/info/alternates pour obtenir des objets du référentiel de référence. L'utilisation d'un référentiel déjà existant comme alternative nécessitera la copie de moins d'objets à partir du référentiel cloné, ce qui réduira les coûts d'entreposage réseau et local. Lors de l'utilisation de --reference-if-able, un répertoire non existant est ignoré avec un avertissement au lieu d'annuler le clone.
-s Ce paramètre permet de partager les objets avec le référentiel source. Lorsque le référentiel à cloner se trouve sur la machine locale, au lieu d'utiliser des liens physiques, configurez automatiquement un .git/objects/info/alternates alternatif pour partager les objets avec le référentiel source. Le référentiel résultant démarre sans aucun objet lui étant propre.
--server-option=option Ce paramètre permet de transmettre la chaîne de caractères de donnée au serveur lors de la communication à l'aide de la version de protocole 2. La chaîne de caractères de donnée ne doit pas contenir de caractère NUL ou LF. La gestion par le serveur des options de serveur, y compris les options inconnues, est spécifique au serveur. Lorsque plusieurs «--server-option=option» sont donnés, ils sont tous envoyés de l'autre côté dans l'ordre indiqué sur la ligne de commande.
--shallow-exclude=revision Ce paramètre permet de créer un clone superficiel avec un historique, en excluant les validations accessibles depuis une branche ou une balise distante spécifiée. Ce paramètre peut être spécifiée plusieurs fois.
--shallow-since=date Ce paramètre permet de créer un clone superficiel avec un historique après l'heure spécifiée.
--shared Ce paramètre permet de partager les objets avec le référentiel source. Lorsque le référentiel à cloner se trouve sur la machine locale, au lieu d'utiliser des liens physiques, configurez automatiquement un .git/objects/info/alternates alternatif pour partager les objets avec le référentiel source. Le référentiel résultant démarre sans aucun objet lui étant propre.
--sparse Ce paramètre permet d'initialiser le fichier d'extraction éparse afin que le répertoire de travail commence avec uniquement les fichiers à la racine du référentiel. Le fichier d'extraction éparse peut être modifié pour agrandir le répertoire de travail selon les besoins.
--template=template_directory Ce paramètre permet d'indiquer le répertoire à partir duquel les modèles seront utilisés.
-u upload-pack Ce paramètre permet d'indiquer le chemin vers git-upload-pack à distance. Lorsqu'il est donné, et que le référentiel à partir duquel cloner est accessible via ssh, il spécifie un chemin non par défaut pour la commande exécutée à l'autre extrémité.
--upload-pack upload-pack Ce paramètre permet d'indiquer le chemin vers git-upload-pack à distance. Lorsqu'il est donné, et que le référentiel à partir duquel cloner est accessible via ssh, il spécifie un chemin non par défaut pour la commande exécutée à l'autre extrémité.
-v Ce paramètre permet d'exécuter l'opération en mode détaillé. N'affecte pas la avertissements de l'état d'avancement au flux d'erreurs standard.
--verbose Ce paramètre permet d'exécuter l'opération en mode détaillé. N'affecte pas la avertissements de l'état d'avancement au flux d'erreurs standard.
--separate-git-dir=git dir Ce paramètre permet de séparer le répertoire git de l'arbre de travail. Au lieu de placer le référentiel cloné là où il est censé être, placez le référentiel cloné dans le répertoire spécifié, puis créez un lien symbolique Git indépendant du système de fichiers vers ce dernier. Le résultat est que le référentiel Git peut être séparé de l'arbre de travail.

Description

Cette commande permet de cloner un référentiel dans un nouveau répertoire.

Remarques

Exemple

L'exemple suivant permet de cloner le projet git dans le dossier mondossierprojet :

git clone git://monserveurgit/mondossier/monprojet.git mondossierprojet


Dernière mise à jour : Mardi, le 5 Janvier 2021