Français ▾ Topics ▾ Latest version ▾ git-for-each-ref last updated in 2.54.0

NOM

git-for-each-ref - Affiche des informations sur chaque référence

SYNOPSIS

git for-each-ref [--count=<nombre>] [--shell|--perl|--python|--tcl]
		   [(--sort=<clé>)…​] [--format=<format>]
		   [--include-root-refs] [--points-at=<objet>]
		   [--merged[=<objet>]] [--no-merged[=<objet>]]
		   [--contains[=<objet>]] [--no-contains[=<objet>]]
		   [(--exclude=<motif>)…​] [--start-after=<marqueur>]
		   [ --stdin | (<motif>...)]

DESCRIPTION

Itérer sur toutes les références correspondant à <motif> et les afficher selon le <format> donné, après les avoir triées selon l’ensemble de <clé> donné. Si <nombre> est donné, s’arrêter après avoir affiché autant de références. Les valeurs interpolées dans <format> peuvent optionnellement être citées comme des littéraux de chaîne dans le langage hôte spécifié, permettant leur évaluation directe dans ce langage.

OPTIONS

<motif>...

Si un ou plusieurs <motif> sont donnés, les seules réfs affichées sont celles qui correspondent à au moins un motif, soit à l’aide de fnmatch(3), soit littéralement, et dans ce dernier cas avec une correspondant complète ou depuis le début jusqu’à une barre oblique.

--stdin

Lire la liste des motifs depuis l’entrée standard au lieu d’une liste d’arguments.

--count=<compte>

S’arrêter après avoir montré <nombre> réfs.

--sort=<clé>

Trier sur le nom de champ _ <clé>_. Préfixez avec - pour trier dans ordre descendant de la valeur. Lorsque ce n’est pas précisé, refname est utilisé . Vous pouvez utiliser l’option --sort=<clé> plusieurs fois, auquel cas la dernière clé devient la clé primaire.

--format[=<format>]

Une chaîne qui interpole %(fieldname) d’une réf affichée et l’objet qu’elle pointe. En outre, la chaîne littérale %% s’affiche comme % et %xx - où xx sont des chiffres hexadécimaux - s’affiche comme le caractère avec code hexadécimal xx. Par exemple, %00 s’interpole à \0 (NUL), %09 à \t (TAB), et %0a à \n (LF).

Sans indication, <format> vaut par défaut %(objectname) SPC %(objecttype) TAB %(refname).

--color[=<quand>]

Respecter toutes les couleurs spécifiées dans l’option --format. Le champ <quand> doit être un des valeurs always, never, ou auto (si <quand> est absent, se comporte comme si always était donné).

--shell
--perl
--python
--tcl

Si elles sont données, les chaînes qui remplacent les variables`%(<nom-de-champ)` sont citées comme des chaînes littérales adaptées au langage hôte spécifié. Ceci est destiné à produire un script qui peut être directement "éval"ué.

--points-at=<objet>

Afficher seulement les références pointant sur l’objet.

--merged[=<objet>]

Ne lister que les références dont les sommets sont accessibles à partir du commit spécifié (HEAD si non spécifié).

--no-merged[=<objet>]

Ne lister que les réfs dont les sommets ne sont pas accessibles à partir de <objet> (HEAD si non spécifié).

--contains[=<objet>]

Ne répertorier que les références qui contiennent <objet> (HEAD si non spécifié).

--no-contains[=<objet>]

Ne répertorier que les références qui ne contiennent pas <objet> (HEAD si non spécifié).

--ignore-case

Le tri et le filtrage sont non-sensibles à la casse.

--omit-empty

Ne pas afficher de nouvelle ligne après les refs formatés lorsque le format se développe en chaîne vide.

--exclude=<motif-exclus>

Si une ou plusieurs options --exclude sont données, seuls les réfs qui ne correspondent à aucun paramètre <motif-exclus> sont affichés. La correspondance est faite en utilisant les mêmes règles que <motif> ci-dessus.

--include-root-refs

Lister les réfs racine (HEAD et les pseudo-réfs) en dehors des réfs régulières.

--start-after=<marqueur>

Permet de paginer la sortie en sautant des références jusqu’à et y compris le marqueur spécifié. Lors de la pagination, il convient de noter que les références peuvent être supprimées, modifiées ou ajoutées entre les invocations. La sortie ne produira que les références qui suivent le marqueur lexicographiquement. La sortie commence par la première référence qui viendrait après le marqueur par ordre alphabétique. Ne peut pas être utilisé avec les options --sort=<clé> ou --stdin, ou avec le ou les argument(s) <motif> pour limiter les réfs.

NOMS DE CHAMPS

Diverses valeurs provenant de champs structurés dans les objets référencés peuvent être utilisées pour interpoler dans la sortie résultante, ou comme clés de tri.

Pour tous les objets, les noms suivants peuvent être utilisés :

refname

Le nom de la référence (la partie après $GIT_DIR/). Pour un nom court non ambigu de la référence, ajouter :short. L’option core.warnAmbiguousRefs est utilisée pour sélectionner le mode d’abréviation strict. Si lstrip=<n> (rstrip=<n>) est ajouté, supprimer <n> composants de chemin séparés par des barres obliques depuis le début (la fin) du nom de référence (p. ex. %(refname:lstrip=2) transforme refs/tags/foo en foo et %(refname:rstrip=2) transforme refs/tags/foo en refs). Si <n> est un nombre négatif, supprimer autant de composants de chemin que nécessaire depuis l’extrémité spécifiée pour laisser -<n> composants de chemin (p. ex. %(refname:lstrip=-2) transforme refs/tags/foo en tags/foo et %(refname:rstrip=-1) transforme refs/tags/foo en refs). Quand la référence n’a pas assez de composants, le résultat devient une chaîne vide si on supprime avec un <n> positif, ou le nom de référence complet si on supprime avec un <N> négatif. Aucun des deux n’est une erreur.

strip peut être utilisé comme synonyme de lstrip.

objecttype

Le type de l’objet (blob, tree, commit, tag).

objectsize

La taille de l’objet (la même que rapportée par git cat-file -s). Ajoutez :disk pour obtenir 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.

objectname

Le nom de l’objet (alias SHA-1). Pour une abréviation non ambiguë du nom d’objet, ajouter :short. Pour une abréviation du nom d’objet avec la longueur souhaitée, ajouter :short=<longueur>, où la longueur minimale est MINIMUM_ABBREV. La longueur peut être dépassée pour garantir des noms d’objets uniques.

deltabase

Cela se développe en le nom d’objet de la base delta pour l’objet donné, s’il est stocké comme un delta. Sinon, cela se développe en le nom d’objet nul (tous les zéros).

upstream

Le nom d’une référence locale qui peut être considérée comme « amont » par rapport à la référence affichée. Respecte :short, :lstrip et :rstrip de la même façon que refname ci-dessus. Respecte également :track pour afficher « [ahead N, behind M] » et :trackshort pour afficher la version concise : « > » (en avance), « < » (en retard), « <> » (en avance et en retard), ou « = » (synchronisé). :track affiche aussi « [gone] » chaque fois qu’une référence amont inconnue est rencontrée. Ajouter :track,nobracket pour afficher les informations de suivi sans crochets (c’est-à-dire « ahead N, behind M »).

Pour toute branche de suivi distant %(upstream), %(upstream:remotename) et %(upstream:remoteref) font référence respectivement au nom du distant et au nom de la référence distante suivie. En d’autres termes, la branche de suivi distant peut être mise à jour explicitement et individuellement en utilisant le refspec %(upstream:remoteref):%(upstream) pour récupérer depuis %(upstream:remotename).

N’a aucun effet si la référence n’a pas d’informations de suivi associées. Toutes les options à l’exception de nobracket sont mutuellement exclusives, mais si elles sont utilisées ensemble, la dernière option est sélectionnée.

push

Le nom d’une référence locale qui représente l’emplacement @{push} pour la référence affichée. Respecte les options :short, :lstrip, :rstrip, :track, :trackshort, :remotename et :remoteref comme le fait upstream. Produit une chaîne vide si aucune référence @{push} n’est configurée.

HEAD

* si HEAD correspond à la référence courante (la branche extraite), ' ' sinon.

color

Changer la couleur de sortie. Suivi de :<nom-de-couleur>, où les noms de couleur sont décrits sous Valeurs dans la section « FICHIER DE CONFIGURATION » de git-config[1]. Par exemple, %(color:bold red).

align

Aligner à gauche, au milieu ou à droite le contenu entre %(align:...) et %(end). L'« align: » est suivi de width=<largeur> et position=<position> dans n’importe quel ordre séparés par une virgule, où <position> est soit left, right ou middle, la valeur par défaut étant left et <largeur> est la longueur totale du contenu avec l’alignement. Par souci de concision, les préfixes « width= » et/ou « position= » peuvent être omis, et les simples <largeur> et <position> utilisés à la place. Par exemple, %(align:<largeur>,<position>). Si la longueur du contenu est supérieure à la largeur, aucun alignement n’est effectué. Si utilisé avec --quote, tout ce qui se trouve entre %(align:...) et %(end) est entre guillemets, mais si imbriqué, seul le niveau le plus élevé effectue la mise entre guillemets.

if

Utilisé comme %(if)...%(then)...%(end) ou %(if)...%(then)...%(else)...%(end). S’il y a un atome avec une valeur ou un littéral de chaîne après le %(if), tout ce qui suit le %(then) est affiché, sinon si l’atome %(else) est utilisé, tout ce qui suit %(else) est affiché. On ignore les espaces lors de l’évaluation de la chaîne avant %(then), ce qui est utile quand on utilise l’atome %(HEAD) qui affiche soit « * » soit « » et qu’on veut appliquer la condition if uniquement sur la référence HEAD. Ajouter « :equals=<chaîne> » ou « :notequals=<chaîne> » pour comparer la valeur entre les atomes %(if:...) et %(then) avec la chaîne donnée.

symref

La référence à laquelle la référence symbolique donnée fait référence. Si ce n’est pas une référence symbolique, rien n’est affiché. Respecte les options :short, :lstrip et :rstrip de la même façon que refname ci-dessus.

signature

La signature GPG d’un commit.

signature:grade

Afficher

G

pour une signature bonne (valide)

B

pour une signature invalide

U

pour une bonne signature avec une validité inconnue

X

pour une bonne signature qui a expiré

Y

pour une bonne signature faite par une clé expirée

R

pour une bonne signature faite par une clé révoquée

E

si la signature ne peut pas être vérifiée (p. ex. clé manquante)

N

pour aucune signature.

signature:signer

Le signataire de la signature GPG d’un commit.

signature:key

La clé de la signature GPG d’un commit.

signature:fingerprint

L’empreinte de la signature GPG d’un commit.

signature:primarykeyfingerprint

L’empreinte de la clé principale de la signature GPG d’un commit.

signature:trustlevel

Le niveau de confiance de la signature GPG d’un commit. Les sorties possibles sont ultimate, fully, marginal, never et undefined.

worktreepath

Le chemin absolu vers l’arbre de travail dans lequel la référence est extraite, si elle est extraite dans un arbre de travail lié. Chaîne vide sinon.

ahead-behind:<commit-esque>

Deux entiers, séparés par un espace, indiquant respectivement le nombre de commits en avance et en retard, lors de la comparaison de la référence de sortie avec le <validesque> spécifié dans le format.

is-base:<commit-esque>

Dans au plus une ligne, (<validesque>) apparaîtra pour indiquer la référence qui est très probablement la référence utilisée comme point de départ de la branche qui a produit <validesque>. Ce choix est fait par heuristique : choisir la référence qui minimise le nombre de commits dans l’historique du premier parent de <validesque> et pas dans l’historique du premier parent de la référence.

Par exemple, considérez la figure suivante des historiques du premier parent de plusieurs références :

*--*--*--*--*--* refs/heads/A
\
 \
  *--*--*--* refs/heads/B
   \     \
    \     \
     *     * refs/heads/C
      \
       \
	*--* refs/heads/D

Ici, si A, B et C sont les références filtrées, et la chaîne de format est %(refname):%(is-base:D), alors la sortie serait

refs/heads/A:
refs/heads/B:(D)
refs/heads/C:

C’est parce que l’historique du premier parent de D a son intersection la plus ancienne avec les historiques du premier parent des références filtrées au niveau d’un ancêtre du premier parent commun à B et C, et les égalités sont départagées par la première référence dans l’ordre trié.

Notez que ce jeton n’apparaîtra pas si l’historique du premier parent de <validesque> ne croise pas les historiques du premier parent des références filtrées.

describe[:<option>,...]

Un nom lisible par l’homme, comme git-describe[1] ; chaîne vide pour les commits non descriptibles. La chaîne describe peut être suivie de deux points et une ou plusieurs options séparées par des virgules.

tags=<valeur-bool>

Au lieu de considérer uniquement les étiquettes annotées, considérer également les étiquettes légères ; voir l’option correspondante dans git-describe[1] pour plus de détails.

abbrev=<nombre>

Utiliser au moins <nombre> caractères hexadécimaux ; voir l’option correspondante dans git-describe[1] pour plus de détails.

match=<motif>

Considérer seulement les étiquettes correspondant au <motif> glob(7) donné, à l’exclusion du préfixe refs/tags/ ; voir l`option correspondante dans git-describe[1] pour les détails.

exclude=<motif>

Ne pas considérer les étiquettes correspondant au <motif> glob(7), à l’exclusion du préfixe refs/tags/ ; voir l’option correspondante dans git-describe[1] pour les détails.

En plus de ce qui précède, pour les objets commit et d’étiquette, les noms de champs d’en-tête (tree, parent, object, type et tag) peuvent être utilisés pour spécifier la valeur dans le champ d’en-tête. Les champs tree et parent peuvent également être utilisés avec le modificateur :short et :short=<longueur> exactement comme objectname.

Pour les objets commit et d’étiquette, les champs spéciaux creatordate et creator correspondront à la date appropriée ou au tuple nom-courriel-date des champs committer ou tagger selon le type d’objet. Ceux-ci sont destinés à travailler sur un mélange d’étiquettes annotées et légères.

Pour les objets d’étiquette, un fieldname préfixé d’un astérisque (*) se développe en la valeur fieldname de l’objet déréférencé, plutôt que celle de l’objet étiquette lui-même.

Les champs qui ont un tuple nom-courriel-date comme valeur (author, committer et tagger) peuvent être suffixés par name, email et date pour extraire le composant nommé. Pour les champs de courriel (authoremail, committeremail et taggeremail), :trim peut être ajouté pour obtenir le courriel sans chevrons, et :localpart pour obtenir la partie avant le symbole @ du courriel élagué. En plus de ceux-ci, l’option :mailmap et les correspondants :mailmap,trim et :mailmap,localpart peuvent être utilisés (l’ordre n’a pas d’importance) pour obtenir les valeurs du nom et du courriel selon le fichier .mailmap ou selon le fichier défini dans la variable de configuration mailmap.file ou mailmap.blob (voir gitmailmap[5]).

Les données brutes d’un objet sont raw.

raw:size

La taille des données brutes de l’objet.

Notez que --format=%(raw) ne peut pas être utilisé avec --python, --shell, --tcl, car ces langages peuvent ne pas prendre en charge des données binaires arbitraires dans leur type de variable chaîne.

Le message dans un commit ou un objet étiquette est contents, dont contents:<partie> peut être utilisé pour extraire diverses parties :

contents:size

La taille en octets du message de validation ou d’étiquette.

contents:subject

Le premier paragraphe du message, qui est typiquement une seule ligne, est pris comme le « sujet » du commit ou du message d’étiquette. Au lieu de contents:subject, le champ subject peut aussi être utilisé pour obtenir les mêmes résultats. :sanitize peut être ajouté à subject pour une ligne de sujet adaptée à un nom de fichier.

contents:body

Le reste du message de validation ou d’étiquette qui suit le « sujet ».

contents:signature

La signature GPG optionnelle de l’étiquette.

contents:lines=<n>

les <n> premières lignes du message.

De plus, les remorques telles qu’interprétées par git-interpret-trailers[1] sont obtenues comme trailers[:<option>,...] (ou en utilisant l’alias historique contents:trailers[:<option>,...]). Pour les valeurs <option> valides, voir la section trailers de git-log[1].

Pour le tri, les champs avec des valeurs numériques sont triés dans l’ordre numérique (objectsize, authordate, committerdate, creatordate, taggerdate). Tous les autres champs sont utilisés pour trier dans l’ordre de leur valeur en octets.

Il existe aussi une option pour trier par versions, ce qui peut être fait en utilisant le nom de champ version:refname ou son alias v:refname.

Dans tous les cas, un nom de champ qui fait référence à un champ non applicable à l’objet référencé par la référence ne cause pas d’erreur. Il retourne une chaîne vide à la place.

Comme cas particulier pour les champs de type date, vous pouvez spécifier un format pour la date en ajoutant : suivi du nom du format de date (voir les valeurs que prend l’option --date de git-rev-list[1]). Si ce formatage est fourni dans une clé --sort, les références seront triées selon la valeur en octets de la chaîne formatée plutôt que la valeur numérique de l’horodatage sous-jacent.

Certains atomes comme %(align) et %(if) nécessitent toujours un %(end) correspondant. On les appelle « atomes ouvrants » et on les désigne parfois par %($open).

Quand une mise entre guillemets spécifique à un langage de script est en vigueur, tout ce qui se trouve entre un atome ouvrant de niveau supérieur et son %(end) correspondant est évalué selon la sémantique de l’atome ouvrant et seul son résultat du niveau supérieur est mis entre guillemets.

EXEMPLES

Un exemple produisant directement du texte formaté. Afficher les 3 commits étiquetés les plus récentes :

#!/bin/sh

git for-each-ref --count=3 --sort='-*authordate' \
`--format='From: %(*authorname) %(*authoremail)
Subject: %(*subject)
Date: %(*authordate)
Ref: %(*refname)

%(*body)
' 'refs/tags'

Un exemple simple montrant l’utilisation de eval du shell sur la sortie, démontrant l’utilisation de --shell. Lister les préfixes de toutes les têtes :

#!/bin/sh

git for-each-ref --shell --format="ref=%(refname)" refs/heads | \
while read entry
do
	eval "$entry"
	echo `dirname $ref`
done

Un rapport un peu plus élaboré sur les étiquettes, montrant que le format peut être un script entier :

#!/bin/sh

fmt='
	r=%(refname)
	t=%(*objecttype)
	T=${r#refs/tags/}

	o=%(*objectname)
	n=%(*authorname)
	e=%(*authoremail)
	s=%(*subject)
	d=%(*authordate)
	b=%(*body)

	kind=Tag
	if test "z$t" = z
	then
		# could be a lightweight tag
		t=%(objecttype)
		kind="Lightweight tag"
		o=%(objectname)
		n=%(authorname)
		e=%(authoremail)
		s=%(subject)
		d=%(authordate)
		b=%(body)
	fi
	echo "$kind $T points at a $t object $o"
	if test "z$t" = zcommit
	then
		echo "The commit was authored by $n $e
at $d, and titled

    $s

Its message reads as:
"
		echo "$b" | sed -e "s/^/    /"
		echo
	fi
'

eval=`git for-each-ref --shell --format="$fmt" \
	--sort='*objecttype' \
	--sort=-taggerdate \
	refs/tags`
eval "$eval"

Un exemple montrant l’utilisation de %(if)...%(then)...%(else)...%(end). Cela préfixe la branche courante avec une étoile.

git for-each-ref --format="%(if)%(HEAD)%(then)* %(else)  %(end)%(refname:short)" refs/heads/

Un exemple montrant l’utilisation de %(if)...%(then)...%(end). Cela affiche le nom de l’auteur, s’il est présent.

git for-each-ref --format="%(refname)%(if)%(authorname)%(then) Authored by: %(authorname)%(end)"

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.

NOTES

Lorsque vous combinez plusieurs filtres --contains et --no-contains, seules les références qui contiennent au moins un des commits --contains et ne contiennent aucun des commits --no-contains sont affichées.

Lorsque vous combinez plusieurs filtres --merged et --no-merged, seules les références qui sont accessibles depuis au moins un des commits --merged et depuis aucun des commits --no-merged sont affichées.

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 .