Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.55.0 no changes
-
2.54.0
2026-04-20
- 2.53.0 no changes
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 no changes
-
2.51.0
2025-08-18
- 2.50.1 no changes
-
2.50.0
2025-06-16
- 2.47.1 → 2.49.1 no changes
-
2.47.0
2024-10-06
- 2.45.1 → 2.46.4 no changes
-
2.45.0
2024-04-29
- 2.44.1 → 2.44.4 no changes
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 no changes
-
2.43.0
2023-11-20
- 2.42.1 → 2.42.4 no changes
-
2.42.0
2023-08-21
- 2.41.1 → 2.41.3 no changes
-
2.41.0
2023-06-01
- 2.34.1 → 2.40.4 no changes
-
2.34.0
2021-11-15
- 2.31.1 → 2.33.8 no changes
-
2.31.0
2021-03-15
- 2.29.1 → 2.30.9 no changes
-
2.29.0
2020-10-19
- 2.23.1 → 2.28.1 no changes
-
2.23.0
2019-08-16
- 2.21.1 → 2.22.5 no changes
-
2.21.0
2019-02-24
- 2.19.1 → 2.20.5 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.17.0 → 2.17.6 no changes
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
- 2.10.5 → 2.11.4 no changes
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
-
2.7.6
2017-07-30
- 2.6.7 no changes
-
2.5.6
2017-05-05
- 2.1.4 → 2.4.12 no changes
-
2.0.5
2014-12-17
SYNOPSIS
gitfor-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é,refnameest 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ùxxsont des chiffres hexadécimaux - s’affiche comme le caractère avec code hexadécimalxx. Par exemple,%00s’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 valeursalways,never, ouauto(si <quand> est absent, se comporte comme sialwaysé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é (
HEADsi non spécifié). -
--no-merged[=<objet>] -
Ne lister que les réfs dont les sommets ne sont pas accessibles à partir de <objet> (
HEADsi non spécifié). -
--contains[=<objet>] -
Ne répertorier que les références qui contiennent <objet> (
HEADsi non spécifié). -
--no-contains[=<objet>] -
Ne répertorier que les références qui ne contiennent pas <objet> (
HEADsi 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
--excludesont 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 (
HEADet 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’optioncore.warnAmbiguousRefsest utilisée pour sélectionner le mode d’abréviation strict. Silstrip=<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) transformerefs/tags/fooenfooet%(refname:rstrip=2) transformerefs/tags/fooenrefs). 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) transformerefs/tags/fooentags/fooet%(refname:rstrip=-1) transformerefs/tags/fooenrefs). 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.strippeut être utilisé comme synonyme delstrip. -
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
:diskpour 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 estMINIMUM_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,:lstripet:rstripde la même façon querefnameci-dessus. Respecte également:trackpour afficher « [ahead N, behind M] » et:trackshortpour afficher la version concise : « > » (en avance), « < » (en retard), « <> » (en avance et en retard), ou « = » (synchronisé).:trackaffiche aussi « [gone] » chaque fois qu’une référence amont inconnue est rencontrée. Ajouter:track,nobracketpour 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
nobracketsont 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,:remotenameet:remoterefcomme le faitupstream. Produit une chaîne vide si aucune référence@{push}n’est configurée. -
HEAD -
*siHEADcorrespond à 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:boldred). -
align -
Aligner à gauche, au milieu ou à droite le contenu entre
%(align:...) et%(end). L'«align:» est suivi dewidth=<largeur> etposition=<position> dans n’importe quel ordre séparés par une virgule, où <position> est soitleft,rightoumiddle, la valeur par défaut étantleftet <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érenceHEAD. 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,:lstripet:rstripde la même façon querefnameci-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,neveretundefined. -
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/DIci, si
A,BetCsont les références filtrées, et la chaîne de format est%(refname):%(is-base:D), alors la sortie seraitrefs/heads/A: refs/heads/B:(D) refs/heads/C:
C’est parce que l’historique du premier parent de
Da 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 àBetC, 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
describepeut ê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éfixerefs/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éfixerefs/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.
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 champsubjectpeut aussi être utilisé pour obtenir les mêmes résultats.:sanitizepeut être ajouté àsubjectpour 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.
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 .