Français ▾ Topics ▾ Latest version ▾ git-cat-file last updated in 2.55.0

NOM

git-cat-file - Fournit le contenu ou les détails pour les objets du dépôt

SYNOPSIS

git cat-file <type> <objet>
git cat-file (-e | -p | -t | -s) <objet>
git cat-file (--textconv | --filters)
	     [<rév>:(<chemin>|<arbre-esque>) | --path=(<chemin>|<arbre-esque>) <rév>]
git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
	     [--buffer] [--follow-symlinks] [--unordered]
	     [--textconv | --filters] [-Z]

DESCRIPTION

Afficher le contenu ou d’autres propriétés comme la taille, le type ou les informations de delta d’un ou plusieurs objets.

Cette commande peut opérer dans deux modes, selon qu’une option de la famille --batch est spécifiée.

En mode non par lot, la commande fournit des informations sur un objet nommé sur la ligne de commande.

En mode par lot, les arguments sont lus depuis l’entrée standard.

OPTIONS

<objet>

Le nom de l’objet à afficher. Pour une liste plus complète des façons d’épeler les noms d’objets, voir la section « SPÉCIFICATION DE RÉVISIONS" dans gitrevisions[7].

-t

Au lieu du contenu, afficher le type d’objet identifié par <objet>.

-s

Au lieu du contenu, afficher la taille de l’objet identifié par <objet>. Si utilisé avec l’option --use-mailmap, affichera la taille de l’objet mis à jour après le remplacement des identités en utilisant le mécanisme mailmap.

-e

Sortir avec un statut nul si <objet> existe et est un objet valide. Si <objet> est d’un format invalide, sortir avec un état non-zéro et émettre une erreur sur stderr.

-p

Formater l’affichage du contenu de <objet> en fonction de son type.

<type>

Typiquement, cela correspond au type réel de <objet> mais la demande d’un type qui peut trivialement être déréférencé à partir du <objet> donné est également autorisée. Un exemple est de demander un "tree" avec <objet> étant un objet commit qui le contient, ou de demander un "blob" avec <objet> étant un objet tag qui le pointe.

--mailmap
--no-mailmap
--use-mailmap
--no-use-mailmap

Utiliser le fichier mailmap pour correspondre les noms d’auteurs, de validateurs et d’étiqueteur, et les adresses email avec les vrais noms et adresses email canoniques. Voir git-shortlog[1].

--textconv

Afficher le contenu tel que transformé par un filtre textconv. Dans ce cas, <objet> doit être de la forme <arbre-esque>:<chemin>, ou :<chemin> afin d’appliquer le filtre au contenu enregistré dans l’index à <chemin>.

--filters

Afficher le contenu tel qu’il a été converti par les filtres configurés dans l’arbre de travail actuel pour le <chemin> donné (c’est-à-dire les filtres de maculage, la conversion de fin de ligne, etc). Dans ce cas, <objet> doit être de la forme <arbre-esque>:<chemin>, ou :<chemin>.

--filter=<spéc. du filtre>
--no-filter

Omettre des objets de la liste des objets affichés. Cela ne peut être utilisé qu’en combinaison avec l’un des modes par lot. Les objets exclus qui ont été explicitement demandés via l’un des modes de lot qui lisent des objets via l’entrée standard (--batch, --batch-check) seront déclarés comme "filtrés". Les objets exclus en mode --batch-all-objects ne seront pas affichés du tout. Le <spéc-de-filtre> peut être l’un des éléments suivants :

La forme --filter=blob:none omet tous les blobs.

La forme'--filter=blob:limit=<n>[kmg]' omet les blobs d’au moins n octets ou unités. n peut être zéro. Les suffixes k, m et g peuvent être utilisés pour nommer les unités en Kio, Mio ou Gio. Par exemple,blob:limit=1k est identique à blob:limit=1024.

La forme --filter=object:type=(tag|commit|tree|blob) permet d’omettre tous les objets qui ne sont pas du type demandé.

--path=<chemin>

À utiliser avec --textconv ou --filters, pour permettre de spécifier un nom d’objet et un chemin séparément, par exemple lorsqu’il est difficile de déterminer la révision d’où provient le blob.

--batch
--batch=<format>

Afficher les informations et le contenu des objets pour chaque objet fourni sur stdin. Ne peut être combiné avec aucune autre option ou argument sauf --textconv, --filters ou --use-mailmap.

  • Utilisé avec --textconv ou --filters, les lignes d’entrée doivent spécifier le chemin, séparé par des espaces. Voir la section SORTIE PAR LOT ci-dessous pour plus de détails.

  • Lorsqu’il est utilisé avec --use-mailmap, pour les objets commit et étiquette, la partie contenu de la sortie affiche les identités remplacées en utilisant le mécanisme mailmap, tandis que la partie information de la sortie affiche les informations originales.

--batch-check
--batch-check=<format>

Afficher les informations sur les objets pour chaque objet fourni sur stdin. Ne peut être combiné avec aucune autre option ou argument sauf --textconv, --filters ou --use-mailmap.

  • Lorsqu’il est utilisé avec --textconv ou --filters, les lignes d’entrée doivent spécifier le chemin, séparé par des espaces. Voir la section SORTIE PAR LOT ci-dessous pour plus de détails.

  • Lorsqu’il est utilisé avec --use-mailmap, pour les objets commit et étiquette, les informations d’objet affichées affichent la taille de l’objet comme si les identités enregistrées avaient été remplacées par le mécanisme mailmap.

--batch-command
--batch-command=<format>

Entrer dans un mode de commande qui lit les commandes et les arguments depuis stdin. Peut seulement être combiné avec --buffer, --textconv, --use-mailmap ou --filters.

  • Utilisé avec --textconv ou --filters, les lignes d’entrée doivent spécifier le chemin, séparé par des espaces. Voir la section SORTIE PAR LOT ci-dessous pour plus de détails.

  • Lorsqu’il est utilisé avec --use-mailmap, pour les objets commit et étiquette, la commande contents affiche les identités remplacées en utilisant le mécanisme mailmap, tandis que la commande info affiche la taille de l’objet comme si les identités avaient été remplacées.

--batch-command reconnaît les commandes suivantes :

contents <objet>

Afficher le contenu de l’objet pour la référence d’objet <objet>. Cela correspond à la sortie de --batch.

info <objet>

Afficher les informations de l’objet pour la référence d’objet <objet>. Cela correspond à la sortie de --batch-check.

flush

Utilisé avec --buffer pour exécuter toutes les commandes précédentes qui ont été émises depuis le début ou depuis le dernier vidage a été émis. Lorsque --buffer est utilisé, aucune sortie ne viendra jusqu’à ce qu’un flush soit émis. Lorsque --buffer n’est pas utilisé, les commandes sont vidées à chaque fois sans émettre flush.

--mailmap (<booléen>)

Activer ou désactiver le mailmap pour les commandes suivantes. L’argument <bool> accepte les mêmes valeurs booléennes que git-config[1]. Les données mailmap sont lues lors de la première utilisation et une seule fois.

--batch-all-objects

Au lieu de lire une liste d’objets sur stdin, exécuter l’opération par lot demandée sur tous les objets du dépôt et de tous les magasins d’objets alternatifs (pas seulement les objets accessibles). Nécessite que --batch ou --batch-check soit spécifié. Par défaut, les objets sont visités dans l’ordre trié par leurs empreintes ; voir aussi --unordered ci-dessous. Les objets sont présentés tels quels, sans respecter le mécanisme "replace" de git-replace[1].

--buffer

Normalement, la sortie par lot est vidée après la sortie de chaque objet, afin qu’un processus puisse lire et écrire de manière interactive depuis cat-file. Avec cette option, la sortie utilise la mise en tampon normale de stdio ; c’est beaucoup plus efficace quand on invoque --batch-check ou --batch-command sur un grand nombre d’objets.

--unordered

Lorsque --batch-all-objects est utilisé, visiter les objets dans un ordre qui peut être plus efficace pour accéder au contenu des objets que l’ordre de hachage. Les détails exacts de l’ordre ne sont pas spécifiés, mais si vous n’avez pas besoin d’un ordre spécifique, ceci devrait généralement résulter en une sortie plus rapide, particulièrement avec --batch. Notez que cat-file ne montrera chaque objet qu’une seule fois, même s’il est stocké plusieurs fois dans le dépôt.

Avec --batch ou --batch-check, suivre les liens symboliques à l’intérieur du dépôt lors de la recherche des objets avec des expressions SHA-1 étendues de la forme arbre-esque:chemin-dans-l-arbre. Au lieu de fournir une sortie sur le lien lui-même, fournir une sortie sur l’objet lié. Si un lien symbolique pointe en dehors de l’arbre (par exemple un lien vers /foo ou un lien au niveau de la racine vers ../foo), la partie du lien qui est en dehors de l’arbre sera affichée.

Cette option ne fonctionne pas (actuellement) correctement lorsqu’un objet dans l’index est spécifié (par exemple :link au lieu de HEAD:link) plutôt qu’un objet dans l’arbre.

Cette option ne peut (actuellement) être utilisée que si --batch ou --batch-check est utilisé.

Par exemple, considérons un dépôt git contenant :

f : un fichier contenant "hello\n".
link : un lien symbolique vers f
dir/link : un lien symbolique vers ../f
plink : un lien symbolique vers ../f
alink : un lien symbolique vers /etc/passwd

Pour un fichier régulier f, echo HEAD:f | git cat-file --batch afficherait

ce013625030ba8dba906f756967f9e9ca394464a blob 6

Et echo HEAD:link | git cat-file --batch --follow-symlinks afficherait la même chose, tout comme HEAD:dir/link, puisqu’ils pointent tous deux vers HEAD:f.

Sans --follow-symlinks, ils afficheraient des données sur le lien symbolique lui-même. Dans le cas de HEAD:link, vous verrez

4d1ae35ba2c8ec712fa2a379db44ad639ca277bd blob 1

Les deux plink et` alink` pointent en dehors de l’arbre, donc ils afficheraient respectivement :

symlink 4
../f
symlink 11
/etc/passwd
-Z

Significatif uniquement avec --batch, --batch-check, ou --batch-command ; l’entrée et la sortie sont délimitées par NUL au lieu de sauts de ligne.

-z

Significatif uniquement avec --batch, --batch-check, ou --batch-command ; l’entrée est délimitée par NUL au lieu de sauts de ligne. Cette option est obsolète au profit de -Z car la sortie peut autrement être compromise.

SORTIE

Si -t est spécifié, un des <type>.

Si -s est spécifié, la taille de l'<objet> en octets.

Si -e est spécifié, aucune sortie, à moins que le <objet> soit malformé.

Si -p est spécifié, le contenu de <objet> est formatté à l’affichage.

Si <type> est spécifié, le contenu brut (mais non compressé) de l'<objet> sera retourné.

SORTIE DE LOT

Si --batch ou --batch-check est donné, cat-file lira les objets depuis stdin, un par ligne, et affichera les informations les concernant dans le même ordre qu’elles ont été lues. Par défaut, la ligne entière est considérée comme un objet, comme si elle était envoyée à git-rev-parse[1].

Lorsque --batch-command est donné, cat-file lit les commandes de stdin, une par ligne, et affiche les informations basées sur la commande donnée. Avec --batch-command, la commande info suivie d’un objet affiche des informations sur l’objet de la même manière que --batch-check, et la commande contents suivie d’un objet afficher le contenu de la même manière que --batch.

Vous pouvez spécifier les informations affichées pour chaque objet en utilisant un <format> personnalisé. Le <format> est copié littéralement sur stdout pour chaque objet, avec des variables de la forme %(atome) développés, suivi d’une nouvelle ligne. Les atomes disponibles sont :

objectname

La représentation hexadécimale complète du nom de l’objet.

objecttype

Le type de l’objet (le même que ce que cat-file -t renvoie).

objectmode

Si l’objet spécifié a des informations de mode (comme un arbre ou une entrée d’index), le mode est affiché en tant qu’entier octal. Sinon, chaîne vide.

objectsize

La taille, en octets, de l’objet (la même que celle que cat-file -s renvoie).

objectsize:disk

La taille, en octets, que l’objet occupe sur le disque. Voir la note sur les tailles sur disque dans la section MISES EN GARDES ci-dessous.

deltabase

Si l’objet est stocké en tant que delta sur le disque, il se développe en représentation hexadécimale complète du nom de l’objet de base delta. Sinon, il se développe jusqu’à l’OID nul (tout à zéro). Voir MISES EN GARDE ci-dessous.

rest

Si cet atome est utilisé dans la chaîne de sortie, les lignes d’entrée sont coupées à la première limite de caractères d’espace. Tous les caractères avant cet espace sont considérés comme le nom de l’objet ; les caractères après ce premier espace (c’est-à-dire le "reste" de la ligne) sont émis à la place de l’atome %(rest).

Si aucun format n’est spécifié, le format par défaut est %(objectname) %(objecttype) %(objectsize).

Si --batch est spécifié, ou si --batch-command est utilisé avec la commande contents les informations sur l’objet sont suivies du contenu de l’objet (consistant en %(objectsize) octets), suivi d’une nouvelle ligne.

Par exemple, --batch sans un format personnalisé produirait :

<oid> SP <type> SP <taille> LF
<contenu> LF

Alors que --batch-check='%(objectname) %(objecttype) produirait :

<oid> SP <type> LF

Si un nom est spécifié sur stdin qui ne peut pas être résolu en un objet dans le dépôt, alors cat-file ignorera tout format personnalisé et affichera :

<objet> SP missing LF

Si un nom est spécifié sur stdin qui est éliminé via --filter=, alors cat-file ignorera tout format personnalisé et affichera :

<objet> SP excluded LF

Si un nom est spécifié qui pourrait faire référence à plus d’un objet (un sha court ambigu), alors cat-file ignorera tout format personnalisé et affichera :

<objet> SP ambiguous LF

Si un nom est spécifié qui se réfère à une entrée de sous-module dans un arbre et que l’objet cible n’existe pas dans le dépôt, alors cat-file ignorera tout format personnalisé et affichera (avec l’ID de l’objet du sous-module) :

<oid> SP submodule LF

Si --follow-symlinks est utilisé, et qu’un lien symbolique dans le dépôt pointe en dehors du dépôt, alors cat-file ignorera tout format personnalisé et affichera :

symlink SP <taille> LF
<lien-symbolique> LF

Le lien symbolique sera soit absolu (commençant par un /), soit relatif à la racine de l’arbre. Par exemple, si rép/lien pointe vers ../../foo, alors <lien-symbolique> sera ../foo. <taille> est la taille du lien symbolique en octets.

Si --follow-symlinks est utilisé, les messages d’erreur suivants seront affichés :

<objet> SP missing LF

est affiché lorsque le lien symbolique initial demandé n’existe pas.

dangling SP <taille> LF
<objet> LF

est affiché lorsque le lien symbolique initial existe, mais que ce vers quoi il pointe (transitivement) n’existe pas.

loop SP <taille> LF
<objet> LF

est affiché pour les boucles de liens symboliques (ou tous les liens symboliques qui nécessitent plus de 40 résolutions de liens pour être résolus).

notdir SP <taille> LF
<objet> LF

est affiché lorsque, pendant la résolution des liens symboliques, un fichier est utilisé comme nom de répertoire.

Alternativement, lorsque -Z est passé, les retours à la ligne dans n’importe lequel des exemples ci-dessus sont remplacés par des terminateurs NUL. Cela garantit que la sortie sera analysable si la sortie elle-même contiendrait un retour à la ligne.

MISES EN GARDE

Notez que les tailles des objets sur le disque sont rapportées avec précision, mais il faut faire attention avant de tirer des conclusions sur les références ou les objets qui sont responsables de l’utilisation du disque. La taille d’un objet non-delta empaqueté peut être beaucoup plus grande que la taille des objets qui sont delta par rapport à lui, mais le choix de l’objet de base et de l’objet delta est arbitraire et peut être modifié lors d’un repack.

Notez également que plusieurs copies d’un objet peuvent être présentes dans la base de données des objets ; dans ce cas, il n’est pas défini quelle taille ou base delta de la copie sera rapportée.

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 .