Git 🌙
Français ▾ Topics ▾ Latest version ▾ git-fetch last updated in 2.46.2

NOM

git-fetch - Télécharger les objets et références depuis un autre dépôt

SYNOPSIS

git fetch [<options>] [<dĂ©pĂ´t> [<spĂ©c-de-rĂ©f>…​]]
git fetch [<options>] <groupe>
git fetch --multiple [<options>] [(<dĂ©pĂ´t> | <groupe>)…​]
git fetch --all [<options>]

DESCRIPTION

Récupérer des branches et/ou des étiquettes (collectivement, "réfs") depuis un ou plusieurs autres dépôts, ainsi que les objets nécessaires pour compléter leur historique. Les branches de suivi à distance sont mises à jour (voir la description de <spéc-de-réf> ci-dessous pour les moyens de contrôler ce comportement).

Par dĂ©faut, toute Ă©tiquette qui pointe vers les historiques recherchĂ©s est Ă©galement recherchĂ©e ; l’effet est de rechercher les Ă©tiquettes qui pointent vers les branches qui vous intĂ©ressent. Ce comportement par dĂ©faut peut ĂŞtre modifiĂ© en utilisant les options --tags ou --no-tags ou en configurant remote.<nom>.tagOpt. En utilisant une spĂ©cification de rĂ©fĂ©rence qui rĂ©cupère les Ă©tiquettes explicitement, vous pouvez Ă©galement rĂ©cupĂ©rer les Ă©tiquettes qui ne pointent pas sur les branches qui vous intĂ©ressent.

git fetch peut aller chercher Ă  partir d’un seul dĂ©pĂ´t nommĂ© ou d’une seule URL, ou Ă  partir de plusieurs dĂ©pĂ´ts Ă  la fois si <groupe> est donnĂ© et qu’il y a une entrĂ©e remotes.<groupe> dans le fichier de configuration. (Voir git-config[1]).

Lorsqu’aucun distant n’est spĂ©cifiĂ©, par dĂ©faut le distant origin sera utilisĂ©, Ă  moins qu’il n’y ait une branche amont configurĂ©e pour la branche courante.

Les noms des refs qui sont rĂ©cupĂ©rĂ©s, ainsi que les noms des objets qu’ils pointent, sont Ă©crits dans .git/FETCH_HEAD. Ces informations peuvent ĂŞtre utilisĂ©es par des scripts ou d’autres commandes git, telles que git-pull[1].

OPTIONS

--[no-]all

RĂ©cupĂ©rer tous les distants, Ă  l’exception de ceux qui ont la variable de configuration remote.<nom>.skipFetchAll renseignĂ©e. Cela surcharge la variable de configuration fetch.all .

-a
--append

Ajouter les noms de rĂ©fĂ©rences et les noms d’objets des rĂ©fĂ©rences rĂ©cupĂ©rĂ©es au contenu existant de .git/FETCH_HEAD. Sans cette option, les anciennes donnĂ©es dans .git/FETCH_HEAD seront Ă©crasĂ©es.

--atomic

Utiliser une transaction atomique pour mettre Ă  jour les rĂ©fĂ©rences locales. Soit toutes les rĂ©fĂ©rences sont mises Ă  jour, soit, en cas d’erreur, aucune rĂ©fĂ©rence n’est mise Ă  jour.

--depth=<profondeur>

Limiter la rĂ©cupĂ©ration au nombre spĂ©cifiĂ© de commits Ă  partir du sommet de l’historique de chaque branche distante. Si vous allez chercher dans un dĂ©pĂ´t "superficiel" crĂ©Ă© par git clone avec l’option --depth=<profondeur> (voir git-clone[1]), approfondir ou raccourcir l’historique jusqu’au nombre spĂ©cifiĂ© de validations. Les Ă©tiquettes pour les commits approfondis ne sont pas rĂ©cupĂ©rĂ©es.

--deepen=<profondeur>

Semblable Ă  --depth, sauf que cela prĂ©cise le nombre de commits Ă  partir de la limite actuelle superficielle au lieu du sommet de l’historique de chaque branche distante.

--shallow-since=<date>

Approfondir ou raccourcir l’historique d’un dĂ©pĂ´t superficiel pour inclure tous les commits accessibles après <date>.

--shallow-exclude=<révision>

Approfondir ou raccourcir l’historique d’un dĂ©pĂ´t superficiel afin d’exclure les commits accessibles depuis une branche ou une Ă©tiquette distante spĂ©cifiĂ©e. Cette option peut ĂŞtre spĂ©cifiĂ©e plusieurs fois.

--unshallow

Si le dépôt de sources est complet, convertir un dépôt superficiel en un dépôt complet, en supprimant toutes les limitations imposées par les dépôts superficiels.

Si le dépôt source est superficiel, il faut en extraire le plus possible afin que le dépôt actuel ait le même historique que le dépôt source.

--update-shallow

Par dĂ©faut, lors de la rĂ©cupĂ©ration d’un dĂ©pĂ´t superficiel, git fetch refuse les rĂ©fĂ©rences qui nĂ©cessitent une mise Ă  jour de .git/shallow. Cette option met Ă  jour le fichier .git/shallow et accepte de telles rĂ©fĂ©rences.

--negotiation-tip=<commit|glob>

Par dĂ©faut, Git signalera au serveur les commits accessibles Ă  partir de toutes les rĂ©fĂ©rences locales pour trouver les commits communs afin de rĂ©duire la taille du fichier de paquet Ă  recevoir. Si ceci est spĂ©cifiĂ©, Git ne signalera que les commits accessibles Ă  partir des sommets donnĂ©s. Ceci est utile pour accĂ©lĂ©rer les recherches lorsque l’utilisateur sait quelle rĂ©f locale est susceptible d’avoir des commits en commun avec la rĂ©f amont qui est recherchĂ©e.

Cette option peut ĂŞtre spĂ©cifiĂ©e plus d’une fois ; si c’est le cas, Git signalera les commits accessibles Ă  partir de l’un des commits donnĂ©s.

L’argument de cette option peut ĂŞtre un glob sur les noms de rĂ©fĂ©rence, une rĂ©fĂ©rence ou le SHA-1 (Ă©ventuellement abrĂ©gĂ©) d’un commit. La spĂ©cification d’un glob Ă©quivaut Ă  spĂ©cifier cette option plusieurs fois, une pour chaque nom de rĂ©fĂ©rence correspondant.

Voir aussi les variables de configuration fetch.negotiationAlgorithm et push.negotiate documentĂ©es dans git-config[1], ainsi que l’option --negotiate-only ci-après.

--negotiate-only

Ne rien récupérer du serveur, et à la place afficher les ancêtres des arguments fournis par --negotiation-tip=*, que nous avons en commun avec le serveur.

C’est incompatible avec --recurse-submodules=[yes|on-demand]. En interne, ceci est utilisĂ© pour implĂ©menter l’option push.negotiate, voir git-config[1].

--dry-run

Montrer ce qui serait fait, sans faire de changements.

--porcelain

Afficher la sortie sur la sortie standard dans un format facile à décrypter pour les scripts. Voir la section SORTIE dans git-fetch[1] pour plus de détails.

C’est incompatible avec --recurse-submodules=[yes|on-demand]`et a la prioritĂ© sur l'option de configuration `fetch.output.

--[no-]write-fetch-head

Ecrire la liste des refs distants rĂ©cupĂ©rĂ©s dans le fichier FETCH_HEAD directement sous $GIT_DIR. C’est la valeur par dĂ©faut. Passer --no-write-fetch-head depuis la ligne de commande indique Ă  Git de ne pas Ă©crire le fichier. Avec l’option --dry-run, le fichier n’est jamais Ă©crit.

-f
--force

Lorsque git fetch est utilisé avec la spécification de référence <src>:<dst>, il peut refuser de mettre à jour la branche locale comme cela a été discuté dans la partie <spécificateur-de-référence> ci-dessous. Cette option permet de passer outre à ce contrôle.

-k
--keep

Conserver le paquet téléchargé.

--multiple

Permettre de spécifier plusieurs arguments <dépôt> et <groupe>. Aucun <spécificateur-de-référence> ne peut être spécifié.

--[no-]auto-maintenance
--[no-]auto-gc

Exécuter git maintenance --auto à la fin pour effectuer la maintenance automatique du dépôt si nécessaire. (--[no-]auto-gc est un synonym.) Ceci est activé par défaut.

--[no-]write-commit-graph

Écrire un graphe de commit après avoir récupéré. Ceci remplace le paramètre de configuration fetch.writeCommitGraph.

--prefetch

Modifier le spĂ©cificateur de rĂ©fĂ©rence configurĂ© pour placer toutes les refs dans l’espace de noms refs/prefetch/. Voir la tâche prefetch dans git-maintenance[1].

-p
--prune

Avant de rĂ©cupĂ©rer, supprimer toutes les rĂ©fĂ©rences de suivi Ă  distance qui n’existent plus sur le dĂ©pĂ´t distant. Les Ă©tiquettes ne sont pas sujettes Ă  l’Ă©lagage si elles ne sont rĂ©cupĂ©rĂ©es qu’en raison du suivi automatique de l’Ă©tiquette par dĂ©faut ou en raison d’une option --tags. Cependant, si les Ă©tiquettes sont rĂ©cupĂ©rĂ©es en raison d’un spĂ©cificateur de rĂ©fĂ©rence explicite (soit en ligne de commande, soit dans la configuration distante, par exemple si le dĂ©pĂ´t distant a Ă©tĂ© clonĂ© avec l’option --mirror), alors elles sont Ă©galement sujettes Ă  l’Ă©lagage. La fourniture de --prune-tags est une abrĂ©viation pour la fourniture du spĂ©cificateur de rĂ©fĂ©rence d’Ă©tiquette.

Voir la section ÉLAGAGE ci-dessous pour plus de détails.

-P
--prune-tags

Avant de rĂ©cupĂ©rer, supprimer toutes les Ă©tiquettes locales qui n’existent plus sur le distant si --prune est activĂ©. Cette option doit ĂŞtre utilisĂ©e avec plus de prĂ©caution, car contrairement Ă  --prune, elle supprime toutes les rĂ©fĂ©rences locales (Ă©tiquettes locales) qui ont Ă©tĂ© crĂ©Ă©es. Cette option est un raccourci pour la fourniture du spĂ©cificateur de rĂ©fĂ©rence d’Ă©tiquette explicite avec --prune, voir la discussion Ă  ce sujet dans sa documentation.

Voir la section ÉLAGAGE ci-dessous pour plus de détails.

-n
--no-tags

Par dĂ©faut, les Ă©tiquettes qui pointent sur des objets tĂ©lĂ©chargĂ©s Ă  partir du dĂ©pĂ´t distant sont rĂ©cupĂ©rĂ©es et stockĂ©es localement. Cette option dĂ©sactive le suivi automatique des Ă©tiquettes. Le comportement par dĂ©faut d’un distant peut ĂŞtre spĂ©cifiĂ© avec le paramètre remote.<nom>.tagOpt. Voir git-config[1].

--refetch

Au lieu de négocier avec le serveur pour éviter de transférer les commits et les objets associés qui sont déjà présents localement, cette option récupère tous les objets comme le ferait un nouveau clone. Utilisez cette option pour réappliquer un filtre de clone partiel depuis la configuration ou en utilisant --filter= lorsque la définition du filtre a changé. La maintenance automatique post-récupération effectuera une consolidation des paquets de la base de données des objets pour supprimer tout objet en double.

--refmap=<spécificateur-de-référence>

Lors de la rĂ©cupĂ©ration des rĂ©fĂ©rences listĂ©es en ligne de commande, utiliser la spĂ©cification de rĂ©fĂ©rence (qui peut ĂŞtre donnĂ©e plusieurs fois) pour mapper les rĂ©fĂ©rences sur les branches de suivi Ă  distance, au lieu des valeurs des variables de configuration remote.*.fetch pour le dĂ©pĂ´t distant. Fournir un <spĂ©cificateur-de-rĂ©fĂ©rence> vide Ă  l’option --refmap fait que Git ignore les spĂ©cification de rĂ©fĂ©rence configurĂ©es et se fie entièrement aux spĂ©cifications de rĂ©fĂ©rence fournies comme arguments de la ligne de commande. Voir la section sur les "Branches de suivi Ă  distance configurĂ©es" pour plus de dĂ©tails.

-t
--tags

RĂ©cupĂ©rer toutes les Ă©tiquettes Ă  distance (c’est-Ă -dire, rĂ©cupĂ©rer les Ă©tiquettes refs/tags/* dans les Ă©tiquettes locales avec le mĂŞme nom), en plus de tout ce qui serait rĂ©cupĂ©rĂ© autrement. L’utilisation de cette seule option ne soumet pas les Ă©tiquettes Ă  un Ă©lagage, mĂŞme si --prune est utilisĂ© (bien que les Ă©tiquettes puissent ĂŞtre Ă©laguĂ©es de toute façon si elles sont aussi la destination d’une spĂ©cification de rĂ©fĂ©rence explicite ; voir --prune).

--recurse-submodules[=(yes|on-demand|no)]

Cette option contrĂ´le si et sous quelles conditions les nouveaux commits des sous-modules doivent ĂŞtre rĂ©cupĂ©rĂ©s Ă©galement. Lorsqu’il parcourt les sous-modules, git fetch essaie toujours de rĂ©cupĂ©rer les sous-modules "modifiĂ©s", c’est-Ă -dire les sous-modules qui ont des commits rĂ©fĂ©rencĂ©s par un commit de superprojet rĂ©cemment rĂ©cupĂ©rĂ© mais qui sont manquants dans le clone de sous-module local. Un sous-module modifiĂ© peut ĂŞtre rĂ©cupĂ©rĂ© tant qu’il est prĂ©sent localement, par exemple dans $GIT_DIR/modules/ (voir gitsubmodules[7]) ; si l’amont ajoute un nouveau sous-module, ce sous-module ne peut pas ĂŞtre rĂ©cupĂ©rĂ© jusqu’Ă  ce qu’il soit clonĂ©, par exemple par git submodule update.

Lorsqu’il est dĂ©fini sur on-demand, seuls les sous-modules modifiĂ©s sont rĂ©cupĂ©rĂ©s. Lorsqu’il a pour valeur yes, tous les sous-modules peuplĂ©s sont rĂ©cupĂ©rĂ©s et les sous-modules non peuplĂ©s et modifiĂ©s sont rĂ©cupĂ©rĂ©s. Avec la valeur no, les sous-modules ne sont jamais rĂ©cupĂ©rĂ©s.

Lorsque cette option n’est pas spĂ©cifiĂ©e, elle utilise la valeur de fetch.recurseSubmodules si elle est dĂ©finie (voir git-config[1]), et prend par dĂ©faut la valeur on-demand si elle n’est pas dĂ©finie. Lorsque cette option est utilisĂ©e sans aucune valeur, elle prend par dĂ©faut la valeur yes.

-j
--jobs=<n>

Nombre d’enfants parallèles Ă  utiliser pour toutes les formes d’extraction.

Si l’option --multiple a Ă©tĂ© spĂ©cifiĂ©e, les diffĂ©rents distants seront rĂ©cupĂ©rĂ©s en parallèle. Si plusieurs sous-modules sont rĂ©cupĂ©rĂ©s, ils seront rĂ©cupĂ©rĂ©s en parallèle. Pour les contrĂ´ler indĂ©pendamment, utilisez les paramètres de configuration fetch.parallel et submodule.fetchJobs (voir git-config[1]).

Généralement, les recherches récursives parallèles et sur des distants multiples seront plus rapides. Par défaut, les recherches sont effectuées de manière séquentielle, et non en parallèle.

--no-recurse-submodules

DĂ©sactiver la rĂ©cupĂ©ration rĂ©cursive des sous-modules (cela a le mĂŞme effet que d’utiliser l’option --recurse-submodules=no).

--set-upstream

Si le distant est rĂ©cupĂ©rĂ© avec succès, ajouter la rĂ©fĂ©rence (de suivi) amont , utilisĂ©e par les commandes sans argument git-pull[1] et autres. Pour plus d’informations, voir branch.<nom>.merge et branch.<nom>.remote dans git-config[1].

--submodule-prefix=<chemin>

Préfixer <chemin> aux chemins affichés dans les messages informatifs tels que "Récupération du sous-module foo". Cette option est utilisée en interne lors de la récursion sur les sous-modules.

--recurse-submodules-default=[yes|on-demand]

Cette option est utilisĂ©e en interne pour fournir temporairement une valeur par dĂ©faut non nĂ©gative pour l’option --recurse-submodules. Toutes les autres mĂ©thodes de configuration de la rĂ©cupĂ©ration rĂ©cursive des sous-module (comme les paramètres de gitmodules[5] et git-config[1]) remplacent cette option, tout comme le fait de spĂ©cifier directement --[no-]recurse-submodules.

-u
--update-head-ok

Par dĂ©faut, git fetch refuse de mettre Ă  jour la tĂŞte qui correspond Ă  la branche en cours. Ce drapeau dĂ©sactive la vĂ©rification. C’est purement pour l’usage interne de git pull pour communiquer avec git fetch, et Ă  moins que vous n’implĂ©mentiez votre propre Porcelaine, vous n’ĂŞtes pas censĂ© l’utiliser.

--upload-pack <upload-pack>

Lorsqu’il est donnĂ©, et que le dĂ©pĂ´t Ă  rĂ©cupĂ©rer est gĂ©rĂ© par git fetch-pack, --exec=<upload-pack> est passĂ© Ă  la commande pour spĂ©cifier le chemin par dĂ©faut pour la commande exĂ©cutĂ©e Ă  l’autre bout.

-q
--quiet

Passer --quiet pour git-fetch-pack et faire taire toute autre commande git utilisĂ©e en interne. La progression n’est pas signalĂ©e dans le flux d’erreurs standard.

-v
--verbose

Mode bavard.

--progress

L’Ă©tat d’avancement est affichĂ© sur la sortie d’erreur standard quand elle est attachĂ©e Ă  un terminal, Ă  moins que -q soit spĂ©cifiĂ©. Ce drapeau force l’Ă©tat d’avancement mĂŞme si le flux d’erreur standard n’est pas dirigĂ© vers un terminal.

-o <option>
--server-option=<option>

Transmettre la chaĂ®ne donnĂ©e au serveur lors d’une communication utilisant la version 2 du protocole. La chaĂ®ne donnĂ©e ne doit pas contenir de caractère NUL ou LF. La gestion par le serveur des options du serveur, y compris les options inconnues, est spĂ©cifique au serveur. Lorsque plusieurs --server-option=<option> sont donnĂ©s, ils sont tous envoyĂ©s Ă  l’autre cĂ´tĂ© dans l’ordre indiquĂ© sur la ligne de commande.

--show-forced-updates

Par dĂ©faut, git vĂ©rifie si une branche est mise Ă  jour de force pendant la rĂ©cupĂ©ration. Cela peut ĂŞtre dĂ©sactivĂ© via fetch.showForcedUpdates, mais l’option --show-forced-updates garantit que cette vĂ©rification a lieu. Voir git-config[1].

--no-show-forced-updates

Par dĂ©faut, git vĂ©rifie si une branche est mise Ă  jour de force pendant la rĂ©cupĂ©ration. Passer --no-show-forced-updates ou rĂ©gler fetch.showForcedUpdates Ă  false pour sauter cette vĂ©rification pour des raisons de performance. Si elle est utilisĂ©e pendant git-pull, l’option --ff-only vĂ©rifiera toujours les mises Ă  jour forcĂ©es avant de tenter une mise Ă  jour rapide. Voir git-config[1].

-4
--ipv4

Utiliser uniquement les adresses IPv4, en ignorant les adresses IPv6.

-6
--ipv6

Utiliser uniquement les adresses IPv6, en ignorant les adresses IPv4.

<dépôt>

Le dĂ©pĂ´t "distant" qui est la source d’une opĂ©ration de rĂ©cupĂ©ration ou de tirage. Ce paramètre peut ĂŞtre soit une URL (voir la section URLS GIT ci-dessous) soit le nom d’un remote (voir la section DISTANTS ci-dessous).

<groupe>

Un nom faisant référence à une liste des dépôts comme la valeur de remotes.<groupe> dans le fichier de configuration. (voir git-config[1]).

<spécificateur-de-référence>

PrĂ©ciser les rĂ©fĂ©rences Ă  rĂ©cupĂ©rer et les rĂ©fĂ©rences locales Ă  mettre Ă  jour. Lorsqu’aucun <spĂ©c-de-rĂ©f> n’apparaĂ®t sur la ligne de commande, les rĂ©fĂ©rences Ă  rĂ©cupĂ©rer sont lues Ă  partir des variables remote.<dĂ©pĂ´t>.fetch Ă  la place (voir BRANCHES DE SUIVI Ă€ DISTANCE CONFIGURÉES ci-dessous).

Le format d’un paramètre <spĂ©c-de-rĂ©f> est un plus + optionnel, suivi de la source <src>, suivi de deux points :, suivi de la destination ref <dst>. Les deux points peuvent ĂŞtre omis lorsque <dst> est vide. <src> est typiquement une rĂ©f, mais cela peut aussi ĂŞtre un nom d’objet hexadĂ©cimal entier.

Un <spec-de-rĂ©f> peut contenir un * dans son <src> pour indiquer une simple correspondance de motif. Un tel refspec fonctionne comme un motif qui correspond Ă  n’importe quelle ref avec le mĂŞme prĂ©fixe. Un motif <spec-de-rĂ©f> doit avoir un * dans les deux <src> et <dst>. Il va faire correspondre les rĂ©fĂ©rences Ă  la destination en remplaçant le * par le contenu correspondant de la source.

Si un spĂ©cificateur de rĂ©fĂ©rence est prĂ©fixĂ© par ^, il sera interprĂ©tĂ© comme un spĂ©cificateur de rĂ©fĂ©rence nĂ©gatif. PlutĂ´t que de spĂ©cifier les rĂ©fĂ©rences Ă  rĂ©cupĂ©rer ou les rĂ©fĂ©rences locales Ă  mettre Ă  jour, un tel spĂ©cificateur de rĂ©fĂ©rence spĂ©cifiera les rĂ©fĂ©rences Ă  exclure. Une rĂ©fĂ©rence sera considĂ©rĂ©e comme correspondante si elle correspond Ă  au moins une rĂ©fĂ©rence positive, et ne correspond Ă  aucune rĂ©fĂ©rence nĂ©gative. Les spĂ©cificateurs de rĂ©fĂ©rence nĂ©gatifs peuvent ĂŞtre utiles pour restreindre le champ d’application d’un spĂ©cificateur modèle de rĂ©fĂ©rence afin qu’il n’inclue pas de rĂ©fĂ©rences spĂ©cifiques. Les spĂ©cificateurs de rĂ©fĂ©rence nĂ©gatifs peuvent eux-mĂŞmes ĂŞtre des spĂ©cificateurs modèles de rĂ©fĂ©rence . Cependant, ils ne peuvent contenir qu’un <src> et ne peuvent pas spĂ©cifier un <dst>. Les noms d’objets hexagonaux complets ne sont pas non plus pris en charge.

tag <Ă©tiquette> signifie la mĂŞme chose que refs/tags/<tag>:refs/tags/<tag> ; cela demande de tout rĂ©cupĂ©rer jusqu’Ă  l’Ă©tiquette donnĂ©e.

La rĂ©fĂ©rence distante qui correspond Ă  <src> est rĂ©cupĂ©rĂ©e, et si <dst> n’est pas une chaĂ®ne vide, une tentative est faite pour mettre Ă  jour la rĂ©fĂ©rence locale qui lui correspond.

Le fait que cette mise Ă  jour soit autorisĂ©e sans --force dĂ©pend de l’espace de noms de rĂ©fĂ©rence vers lequel elle est rĂ©cupĂ©rĂ©e, du type d’objet rĂ©cupĂ©rĂ©, et si la mise Ă  jour est considĂ©rĂ©e comme une avance rapide. GĂ©nĂ©ralement, les mĂŞmes règles s’appliquent pour la rĂ©cupĂ©ration que pour la poussĂ©e, voir la section <spĂ©c-de-rĂ©f>... de git-push[1] pour les connaĂ®tre. Les exceptions Ă  ces règles particulières Ă  git fetch sont notĂ©es ci-dessous.

Jusqu’Ă  la version 2.20 de Git, et contrairement Ă  ce qui se passe avec git-push[1], toute mise Ă  jour de refs/tags/* serait acceptĂ©e sans + dans la spĂ©c-de-rĂ©f (ou --force). Lors de la rĂ©cupĂ©ration, nous considĂ©rons sans distinction toutes les mises Ă  jour d’Ă©tiquettes depuis un dĂ©pĂ´t distance comme des rĂ©cupĂ©rations forcĂ©es. Depuis la version 2.20 de Git, la rĂ©cupĂ©ration pour mettre Ă  jour les refs/tags/* fonctionne de la mĂŞme manière que lors de la poussĂ©e. C’est-Ă -dire que toute mise Ă  jour sera rejetĂ©e sans "+" dans le spĂ©cificateur de rĂ©fĂ©rence (ou --force).

Contrairement Ă  une poussĂ©e avec git-push[1], toute mise Ă  jour en dehors de refs/{tags,heads}/* sera acceptĂ©e sans + dans le spĂ©c-de-rĂ©f (ou --force), que ce soit en Ă©changeant par exemple un objet arbre pour un blob, ou un commit pour un autre commit qui n’a pas le commit prĂ©cĂ©dent comme ancĂŞtre etc.

Contrairement Ă  une poussĂ©e avec git-push[1], il n’y a pas de configuration qui modifie ces règles, et rien de tel qu’un crochet prĂ©-rĂ©cupĂ©ration pre-fetch analogue Ă  celui de prĂ©-rĂ©ception`pre-receive`.

Comme pour la poussĂ©e avec git-push[1], toutes les règles dĂ©crites ci-dessus concernant ce qui n’est pas autorisĂ© comme une mise Ă  jour, peuvent ĂŞtre annulĂ©es en ajoutant un "+" optionnel Ă  un spĂ©cificateur de rĂ©fĂ©rence (ou en utilisant l’option de ligne de commande --force). La seule exception Ă  cette règle est qu’aucun forçage ne fera accepter Ă  l’espace de noms refs/heads/* un objet non commit.

Note
Lorsque la branche distante que vous voulez rĂ©cupĂ©rer est connue pour ĂŞtre rĂ©gulièrement rembobinĂ©e et rebasĂ©e, on s’attend Ă  ce que son nouveau sommet ne soit pas un descendant de son sommet prĂ©cĂ©dent (telle qu’il Ă©tait stockĂ© dans votre branche de suivi Ă  distance la dernière fois que vous l’avez rĂ©cupĂ©rĂ©). Vous pouvez utiliser le signe "+" pour indiquer que des mises Ă  jour non en avance rapide seront nĂ©cessaires pour ces branches. Il n’y a aucun moyen de dĂ©terminer ou de dĂ©clarer qu’une branche sera rendue disponible dans un dĂ©pĂ´t avec ce comportement ; l’utilisateur qui tire doit simplement savoir que c’est le modèle d’utilisation attendu pour une branche.
--stdin

Lire les spĂ©cifications de rĂ©fĂ©rence, une par ligne, de stdin en plus de celles fournies comme arguments. Le format "tag <nom>" n’est pas pris en charge.

URL GIT

En gĂ©nĂ©ral, les URL contiennent une information sur le protocole de transport, l’adresse du serveur distant et le chemin vers le dĂ©pĂ´t. En fonction du protocole de transport, certaines de ces informations peuvent ĂŞtre absentes.

Git supporte les protocoles ssh, git, http et https (en plus, ftp et ftps peuvent être utilisés pour la récupération, mais ceux-ci sont inefficaces et déconseillés ; ne les utilisez pas).

Le transport natif (c’est-Ă -dire l’URL git://) n’utilise pas d’authentification et ne devrait ĂŞtre utilisĂ© qu’avec prĂ©caution sur des rĂ©seaux non sĂ©curisĂ©s.

Les syntaxes suivantes peuvent être utilisées avec eux :

  • ssh://[<utilisateur>@]<hĂ´te>[:<port>]/<chemin-du-dĂ©pĂ´t-git>

  • git://<hĂ´te>[:<port>]/<chemin-du-dĂ©pĂ´t-git>

  • http[s]://<hĂ´tet>[:<port>]/<chemin-du-dĂ©pĂ´t-git>

  • ftp[s]://<hĂ´te>[:<port>]/<chemin-du-dĂ©pĂ´t-git>

Une syntaxe alternative de type scp peut aussi être utilisée pour le protocole ssh :

  • [<utilisateur>@]<hĂ´te>:/<chemin-du-dĂ©pĂ´t-git>

Cette syntaxe n’est reconnue que s’il n’y a pas de barre oblique devant les premiers deux-points. Cela permet de prendre en charge des chemins locaux qui contiendraient des deux-points. Par exemple, le chemin local toto:titi pourrait ĂŞtre spĂ©cifiĂ© comme un chemin absolu ou ./toto:titi pour Ă©viter d’ĂŞtre interprĂ©tĂ© comme une url ssh.

Les protocoles ssh et git supportent en plus l’expansion ~<utilisateur>  :

  • ssh://[<utilisateur>@]<hĂ´te>[:<port>]/~<utilisateur>/<chemin-du-dĂ©pĂ´t-git>

  • git://<hĂ´te>[:<port>]/~<utilisateur>/<chemin-du-dĂ©pĂ´t-git>

  • [<utilisateur>@]<hĂ´te>:~<utilisateur>/<chemin-du-dĂ©pĂ´t-git>

Pour les dépôts locaux, supportés aussi nativement par Git, les syntaxes suivantes sont aussi admises :

Ces deux syntaxes sont Ă  peu près Ă©quivalentes, Ă  part lors d’un clonage, oĂą la première implique l’option --local. Voir git-clone[1] pour plus de dĂ©tails.

git clone, git fetch et git pull, mais pas git push, acceptent également un fichier paquet approprié. Voir git-bundle[1].

Quand Git ne sait pas comment gĂ©rer un certain protocole, il essaie d’utiliser l’assistant de gestion de distant remote-<transport>, s’il existe. Pour requĂ©rir l’emploi d’un assistant spĂ©cifique, la syntaxe suivante peut ĂŞtre utilisĂ©e :

  • <transport>::<adresse>

oĂą <adresse> peut ĂŞtre un chemin, un serveur et chemin, ou une chaĂ®ne URL arbitraire reconnue par l’assistant de gestion de distant invoquĂ©. Voir gitremote-helpers[7] pour plus de dĂ©tails.

S’il y a un grand nombre de dĂ©pĂ´ts aux noms similaires et que vous souhaitez utiliser un format diffĂ©rent pour eux (de telle sorte que les URL que vous utiliserez seront rĂ©Ă©crites en URL fonctionnelles), vous pouvez crĂ©er une section de configuration de la forme :

	[url "<veritable-base-d-url>"]
		insteadOf = <autre-base-d’URL>

Par exemple, avec ceci :

	[url "git://git.host.xz/"]
		insteadOf = host.xz:/chemin/vers/
		insteadOf = travail:

une URL comme « travail:depot.git » ou « host.xz:/chemin/vers/depot.git » sera réécrite dans tout contexte qui requiert une URL en « git://git.host.xz/depot.git ».

Si vous souhaitez réécrire les URL seulement pour pousser, vous pouvez créer une section de configuration de la forme :

	[url "<veritable-base-d’URL>"]
		pushInsteadOf = <autre-base-d-URL>

Par exemple, avec ceci :

	[url "ssh://exemple.org/"]
		pushInsteadOf = git://exemple.org/

une URL telle que « git://exemple.org/chemin/vers/le/depot.git » sera rĂ©Ă©crite en « ssh://exemple.org/chemin/vers/le/depot.git » pour les poussĂ©es, mais les tirages utiliseront encore l’URL originale.

DISTANTS

Le nom de l’un des Ă©lĂ©ments suivants peut ĂŞtre utilisĂ© Ă  la place d’une URL en tant qu’argument <dĂ©pĂ´t> :

  • un distant dans le fichier de configuration Git : $GIT_DIR/config,

  • un fichier dans le rĂ©pertoire $GIT_DIR/remotes, ou

  • un fichier dans le rĂ©pertoire $GIT_DIR/branches.

Toutes ces options vous permettent Ă©galement d’omettre le spĂ©cificateur de rĂ©fĂ©rence de la ligne de commande car elles contiennent chacune un spĂ©cificateur de rĂ©fĂ©rence que git utilisera par dĂ©faut.

distant nommé dans le fichier de configuration

Vous pouvez choisir de fournir le nom d’un distant que vous aviez prĂ©cĂ©demment configurĂ© en utilisant git-remote[1], git-config[1] ou mĂŞme par une modification manuelle du fichier $GIT_DIR/config. L’URL de ce distant sera utilisĂ©e pour accĂ©der au dĂ©pĂ´t. Le spĂ©cificateur de rĂ©fĂ©rence de ce distant sera utilisĂ© par dĂ©faut lorsque vous ne fournissez pas de spĂ©cificateur de rĂ©fĂ©rence sur la ligne de commande. L’entrĂ©e dans le fichier de configuration apparaĂ®tra comme ceci :

	[remote "<nom>"]
		url = <URL>
		pushurl = <url-poussée>
		push = <spéc-de-réf>
		fetch = <spéc-de-réf>

Le <url-de-poussĂ©e> est utilisĂ© uniquement pour les poussĂ©es. Il est optionnel et sa valeur par dĂ©faut est <URL>. Pousser vers un distant affecte tous les urls-de-poussĂ©s dĂ©finis ou tous les urls dĂ©finis si aucun url-de-poussĂ©e n’est dĂ©fini. Fetch, cependant, ne rĂ©cupĂ©rera que le premier url dĂ©fini si plusieurs urls sont dĂ©finis.

Fichier nommé dans $GIT_DIR/remotes

Vous pouvez choisir de fournir le nom d’un fichier dans $GIT_DIR/remotes. L’URL dans ce fichier sera utilisĂ©e pour accĂ©der au dĂ©pĂ´t. Le spĂ©cificateur de rĂ©fĂ©rence dans ce fichier sera utilisĂ© par dĂ©faut lorsque vous ne fournissez pas de spĂ©cificateur de rĂ©fĂ©rence sur la ligne de commande. Ce fichier doit avoir le format suivant :

	URL: un des format d'URL ci-dessus
	Push: <spéc-de-réf>
	Pull: <spéc-de-réf>

Les lignes Push:" sont utilisées par git push et les lignes Pull: sont utilisées par git pull et git fetch. Des lignes Push: et Pull: multiples peuvent être spécifiées pour des mappages supplémentaires de branches.

Fichier nommé dans $GIT_DIR/branches

Vous pouvez choisir de fournir le nom d’un fichier dans $GIT_DIR/branches. L’URL de ce fichier sera utilisĂ©e pour accĂ©der au dĂ©pĂ´t. Ce fichier doit avoir le format suivant :

	<URL>#<tĂŞte>

<URL> est obligatoire ; #<tĂŞte> est facultatif.

En fonction de l’opĂ©ration, git utilisera l’un des spĂ©cificateurs de rĂ©fĂ©rence suivants, si vous n’en fournissez pas un en ligne de commande. <branche> est le nom de ce fichier dans $GIT_DIR/branches et <tĂŞte> vaut par dĂ©faut master.

git fetch utilise :

	refs/heads/<tĂŞte>:refs/heads/<branche>

git push utilise :

	HEAD:refs/heads/<tĂŞte>

LES BRANCHES DE SUIVI À DISTANCE CONFIGURÉES

Vous interagissez souvent avec le mĂŞme dĂ©pĂ´t distant en y allant rĂ©gulièrement et de manière rĂ©pĂ©tĂ©e. Afin de suivre la progression d’un tel dĂ©pĂ´t distant, git fetch vous permet de configurer les variables de configuration remote.<dĂ©pĂ´t>.fetch.

En général, une telle variable peut ressembler à ceci :

[remote "origin"]
	fetch = +refs/heads/*:refs/remotes/origin/*

Cette configuration est utilisée de deux façons :

  • Lorsque git fetch est lancĂ© sans spĂ©cifier les branches et/ou les Ă©tiquettes Ă  rĂ©cupĂ©rer en ligne de commande, par exemple git fetch origin ou git fetch, les valeurs remote.<dĂ©pĂ´t>.fetch sont utilisĂ©es comme spĂ©c-de-rĂ©f --elles spĂ©cifient quelles rĂ©fs Ă  rĂ©cupĂ©rer et quelles rĂ©fs locales Ă  mettre Ă  jour. L’exemple ci-dessus va chercher toutes les branches qui existent dans origin (c’est-Ă -dire toute rĂ©f qui correspond au cĂ´tĂ© gauche de la valeur, "refs/heads/*") et mettre Ă  jour les branches de suivi Ă  distance correspondantes dans la hiĂ©rarchie refs/remotes/origin/*.

  • Lorsque git fetch est lancĂ© avec des branches et/ou des Ă©tiquettes explicites Ă  rĂ©cupĂ©rer en ligne de commande, par exemple git fetch origin master, les <spĂ©c-de-rĂ©f>s donnĂ©es en ligne de commande dĂ©terminent ce qui doit ĂŞtre rĂ©cupĂ©rĂ© (par exemple master dans l’exemple, qui est un raccourci pour master:, ce qui signifie "chercher la branche master mais je ne dis pas explicitement quelle branche de suivi Ă  distance mettre Ă  jour avec elle depuis la ligne de commande"), et la commande de l’exemple ne cherchera que la branche master. Les valeurs de remote.<dĂ©pĂ´t>.fetch dĂ©terminent quelle branche de suivi Ă  distance, s’il y en a une, est mise Ă  jour. Lorsqu’elles sont utilisĂ©es de cette façon, les valeurs de remote.<dĂ©pĂ´t>.fetch n’ont aucun effet sur la dĂ©cision de ce qui est rĂ©cupĂ©rĂ© (c’est-Ă -dire que les valeurs ne sont pas utilisĂ©es comme spĂ©c-de-rĂ©f lorsque la ligne de commande liste les spĂ©c-de-rĂ©fs) ; elles ne sont utilisĂ©es que pour dĂ©cider de l’endroit oĂą les rĂ©fs qui sont rĂ©cupĂ©rĂ©es sont stockĂ©es en agissant comme une table de correspondance.

Cette dernière utilisation des valeurs de remote.<dépôt>.fetch peut être écrasée en donnant le(s) paramètre(s) --refmap=<spéc-de-réf> sur la ligne de commande.

ÉLAGAGE

Par dĂ©faut, Git conserve les donnĂ©es Ă  moins qu’elles ne soient explicitement jetĂ©es ; cela s’Ă©tend Ă  la conservation des rĂ©fĂ©rences locales aux branches des distants qui ont eux-mĂŞmes supprimĂ© ces branches.

Si on les laisse s’accumuler, ces rĂ©fĂ©rences pĂ©rimĂ©es pourraient rendre les performances mauvaises sur les gros dĂ©pĂ´t qui ont beaucoup de branches, et par exemple rendre la sortie de commandes comme git branch -a --contains <commit> inutilement verbeuse, ainsi qu’avoir un impact sur tout ce qui travaillera avec l’ensemble des rĂ©fĂ©rences connues.

Ces rĂ©fĂ©rences de suivi Ă  distance peuvent ĂŞtre supprimĂ©es une seule fois avec l’une ou l’autre des commandes suivantes :

# Pendant la récupération
$ git fetch --prune <nom>

# Élaguer seulement, ne pas récupére
$ git remote prune <nom>

Pour Ă©laguer les rĂ©fĂ©rences dans le cadre de votre flux de travail normal sans avoir besoin de vous rappeler de l’exĂ©cuter, dĂ©finissez fetch.prune globalement, ou remote.<nom>.prune pour chaque dĂ©pĂ´t distant dans la configuration. Voir git-config[1].

C’est lĂ  que les choses deviennent dĂ©licates et plus spĂ©cifiques. La fonction d’Ă©lagage ne se prĂ©occupe pas vraiment des branches, elle va plutĂ´t Ă©laguer les rĂ©fĂ©rences locales ←→ Ă  distance en fonction du spĂ©cificateur de rĂ©fĂ©rence du dĂ©pĂ´t distant (voir <spĂ©c-de-rĂ©f> et BRANCHES DE SUIVI Ă€ DISTANCE CONFIGURÉES ci-dessus).

Par consĂ©quent, si le spĂ©cificateur de rĂ©fĂ©rence du serveur distant inclut par exemple refs/tags/*:refs/tags/*, ou si vous lancez manuellement par exemple git fetch --prune <nom> "refs/tags/*:refs/tags/*", ce ne seront pas les branches de suivi Ă  distance qui seront supprimĂ©es, mais toute Ă©tiquette locale qui n’existe pas sur le serveur distant.

Ce n’est peut-ĂŞtre pas ce Ă  quoi vous vous attendez, c’est-Ă -dire que vous voulez Ă©laguer le server distant <nom>, mais aussi y rĂ©cupĂ©rer explicitement des Ă©tiquettes, de sorte que lorsque vous le rĂ©cupĂ©rez, vous supprimez toutes vos Ă©tiquettes locales, dont la plupart ne proviennent pas du dĂ©pĂ´t distant <nom> au dĂ©part.

Soyez donc prudent lorsque vous utilisez un spécificateur de référence comme refs/tags/*:refs/tags/*, ou toute autre spécificateur de référence qui pourrait faire correspondre des références de plusieurs dépôts distants au même espace de noms local.

Étant donnĂ© que la mise Ă  jour des branches et des Ă©tiquettes sur le dĂ©pĂ´t distant est un cas d’utilisation courant, l’option --prune-tags peut ĂŞtre fournie avec --prune pour Ă©laguer les Ă©tiquettes locales qui n’existent pas sur le dĂ©pĂ´t distant, et forcer la mise Ă  jour des Ă©tiquettes qui diffèrent. L’Ă©lagage des Ă©tiquettes peut Ă©galement ĂŞtre activĂ© avec fetch.pruneTags ou remote.<nom>.pruneTags dans la configuration. Voir git-config[1].

L’option --prune-tags est Ă©quivalente Ă  avoir refs/tags/*:refs/tags/* dĂ©clarĂ© dans les spĂ©cificateurs de rĂ©fĂ©rence du dĂ©pĂ´t distant. Cela peut conduire Ă  des interactions apparemment Ă©tranges :

# Ces deux ligne vont chercher les Ă©tiquettes
$ git fetch --no-tags origin 'refs/tags/*:refs/tags/*
$ git fetch --no-tags --prune-tags origin

La raison pour laquelle il ne gĂ©nère pas d’erreur lorsqu’il est fourni sans --prune ou ses pendants en configuration est pour la flexibilitĂ© des versions configurĂ©es et pour maintenir un mappage 1 = 1 entre ce que font les drapeaux de ligne de commande et ce que font les versions de configuration.

Il est raisonnable, par exemple de configurer fetch.pruneTags = true dans` ~ / .gitconfig` pour que les étiquettes soient élaguées chaque fois que git fetch --prune est exécuté, sans que chaque appel de git fetch sans --prune soit une erreur.

L’Ă©lagage des Ă©tiquettes avec --prune-tags fonctionne Ă©galement lors de la rĂ©cupĂ©ration d’une URL au lieu d’un dĂ©pĂ´t distant nommĂ©. Toutes ces lignes Ă©lagueront les Ă©tiquettes non trouvĂ©es sur origin :

$ git fetch origin --prune --prune-tags
$ git fetch origin --prune 'refs/tags/*:refs/tags/*
$ git fetch <url-d-origin> --prune --prune-tags
$ git fetch <url-d-origin> --prune 'refs/tags/*:refs/tags/*

SORTIE

La sortie de "git fetch" dépend de la méthode de transport utilisée ; cette section décrit la sortie lors de la récupération sur le protocole Git (soit localement soit via ssh) et le protocole Smart HTTP.

L’Ă©tat de la rĂ©cupĂ©ration est affichĂ© sous forme de tableau, chaque ligne reprĂ©sentant l’Ă©tat d’une seule rĂ©fĂ©rence. Chaque ligne est de la forme :

 <drapeau> <résumé> <de> -> <à> [<raison>]

Lorsque vous utilisez --porcelain, le format de sortie est destinĂ© Ă  ĂŞtre analysĂ© par la machine. Contrairement aux formats de sortie lisibles par l’homme, il s’imprime donc sur la sortie standard au lieu de l’erreur standard. Chaque ligne est de la forme :

<drapeau> <ancien-id-objet> <nouveau-id-objet> <référence-locale>

L’Ă©tat des rĂ©fĂ©rences Ă  jour n’est affichĂ© que si l’option --verbose est utilisĂ©e.

En mode de sortie compact, spĂ©cifiĂ© avec la variable de configuration fetch.output, si l’un des deux <de> ou <Ă > est trouvĂ© dans l’autre chaĂ®ne, il sera substituĂ© par * dans l’autre chaĂ®ne. Par exemple, master -> origin/master devient master -> origin/*.

drapeau

Un seul caractère indiquant le statut de la référence :

(espace)

pour une récupération en avance rapide réussie ;

+

pour une mise à jour forcée avec succès ;

-

pour une ref. élaguée avec succès ;

t

pour une mise Ă  jour d’Ă©tiquette avec succès ;

*

pour la rĂ©cupĂ©ration rĂ©ussie d’une nouvelle rĂ©f. ;

!

pour une rĂ©fĂ©rence qui a Ă©tĂ© rejetĂ©e ou qui n’a pas pu ĂŞtre mise Ă  jour ; et

=

pour une rĂ©fĂ©rence qui Ă©tait Ă  jour et n’avait pas besoin d’ĂŞtre rĂ©cupĂ©rĂ©e.

résumé

Pour une rĂ©f rĂ©cupĂ©rĂ©e avec succès, le rĂ©sumĂ© montre les anciennes et les nouvelles valeurs de la rĂ©f sous une forme qui peut ĂŞtre utilisĂ©e comme argument pour git log (c’est <ancien>..<nouveau> dans la plupart des cas, et <ancien>...<nouveau> pour les mises Ă  jour forcĂ©es pas en avance rapide).

de

Le nom de la référence distante récupérée, moins son préfixe "refs/<type>/". En cas de suppression, le nom de la référence distante est "(none)".

Ă 

Le nom de la référence locale en cours de mise à jour, moins son préfixe refs/<type>/.

raison

Une explication comprĂ©hensible. Dans le cas des rĂ©fĂ©rences qui ont Ă©tĂ© rĂ©cupĂ©rĂ©es avec succès, aucune explication n’est nĂ©cessaire. Dans le cas d’une rĂ©fĂ©rence en Ă©chec, la raison de l’Ă©chec est dĂ©crite.

EXEMPLES

  • Mettre Ă  jour les branches de suivi distantes :

    $ git fetch origin

    La commande ci-dessus copie toutes les branches de l’espace de nom distant refs/heads/ et les stocke dans l’espace de noms local refs/remotes/origin/, sauf si l’option remote. <dĂ©pĂ´t> .fetch est utilisĂ©e pour spĂ©cifier un spĂ©cificateur de rĂ©fĂ©rence autre que celui par dĂ©faut.

  • En utilisant explicitement les spĂ©cificateurs de rĂ©fĂ©rence :

    $ git fetch origin +seen:seen maint:tmp

    Cela met à jour (ou crée, si nécessaire) les branches seen et tmp dans le dépôt local en récupérant (respectivement) les branches seen et maint dans le dépôt distant.

    La branche seen sera mise Ă  jour mĂŞme si ce n’est pas en avance rapide, car elle est prĂ©fixĂ©e par un signe plus ; tmp ne le sera pas.

  • Jette un coup d’Ĺ“il Ă  la branche d’un dĂ©pĂ´t distant, sans configurer le distant dans votre dĂ©pĂ´t local :

    $ git fetch git://git.kernel.org/pub/scm/git/git.git maint
    $ git log FETCH_HEAD

    La première commande rĂ©cupère la branche maint dans le dĂ©pĂ´t Ă  git://git.kernel.org/pub/scm/git/git.git et la seconde commande utilise FETCH_HEAD pour examiner la branche avec git-log[1]. Les objets rĂ©cupĂ©rĂ©s seront Ă©ventuellement supprimĂ©s par le service d’entretien intĂ©grĂ© de git (voir git-gc[1]).

SÉCURITÉ

Les protocoles "fetch" et "push" ne sont pas conçus pour empĂŞcher un tiers de voler des donnĂ©es de l’autre dĂ©pĂ´t qui n’Ă©taient pas destinĂ©es Ă  ĂŞtre partagĂ©es. Si vous avez des donnĂ©es privĂ©es que vous devez protĂ©ger contre un tiers malveillant, la meilleure solution est de les stocker dans un autre dĂ©pĂ´t. Cela s’applique aussi bien aux clients qu’aux serveurs. En particulier, les espaces de noms sur un serveur ne sont pas efficaces pour le contrĂ´le de l’accès en lecture ; vous ne devez accorder l’accès en lecture Ă  un espace de noms qu’aux clients auxquels vous feriez confiance pour l’accès en lecture Ă  l’ensemble du dĂ©pĂ´t.

Les vecteurs d’attaque connus sont les suivants :

  1. La victime envoie des lignes "have" annonçant les identifiants des objets qu’elle possède et qui ne sont pas explicitement destinĂ©s Ă  ĂŞtre partagĂ©s, mais qui peuvent ĂŞtre utilisĂ©s pour optimiser le transfert si le pair les possède Ă©galement. L’attaquant choisit un ID d’objet X Ă  voler et envoie une rĂ©fĂ©rence Ă  X, mais n’est pas obligĂ© d’envoyer le contenu de X parce que la victime l’a dĂ©jĂ . La victime croit maintenant que l’attaquant a X, et elle lui renvoie le contenu de X plus tard. (Cette attaque est la plus simple Ă  rĂ©aliser pour un client sur un serveur, en crĂ©ant une rĂ©fĂ©rence Ă  X dans l’espace de noms auquel le client a accès et en la rĂ©cupĂ©rant ensuite. La façon la plus probable pour un serveur de l’exĂ©cuter sur un client est de "fusionner" X dans une branche publique et d’espĂ©rer que l’utilisateur fasse un travail supplĂ©mentaire sur cette branche et la repousse vers le serveur sans remarquer la fusion).

  2. Comme en n°1, l’attaquant choisit un objet ID X Ă  voler. La victime envoie un objet Y que l’attaquant possède dĂ©jĂ , et l’attaquant prĂ©tend faussement avoir X et non Y, de sorte que la victime envoie Y comme delta contre X. Le delta rĂ©vèle Ă  l’attaquant des rĂ©gions de X qui sont similaires Ă  Y.

CONFIGURATION

Warning

Missing fr/includes/cmd-config-section-all.txt

See original version for this content.

Warning

Missing fr/config/fetch.txt

See original version for this content.

BOGUES

L’utilisation de --recurse-submodules ne permet actuellement d’obtenir de nouveaux commits que dans les sous-modules qui sont prĂ©sents par exemple dans $GIT_DIR/modules/. Lorsqu’un nouveau sous-module est ajoutĂ© en amont, le sous-module lui-mĂŞme ne peut pas ĂŞtre rĂ©cupĂ©rĂ©, ce qui rend impossible de vĂ©rifier ce sous-module plus tard sans avoir Ă  le rĂ©cupĂ©rer Ă  nouveau. Ce problème devrait ĂŞtre corrigĂ© dans une prochaine version de Git.

VOIR AUSSI

GIT

Fait partie de la suite git[1]

TRADUCTION

Cette page de manuel a été traduite par Jean-Noël Avila <jn.avila AT free DOT fr> et les membres du projet git-manpages-l10n. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le site https://github.com/jnavila/git-manpages-l10n .

scroll-to-top