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.46.2 → 2.47.0 no changes
- 2.46.1 09/13/24
- 2.46.0 07/29/24
- 2.45.1 → 2.45.2 no changes
- 2.45.0 04/29/24
- 2.44.1 → 2.44.2 no changes
- 2.44.0 02/23/24
- 2.43.1 → 2.43.5 no changes
- 2.43.0 11/20/23
- 2.42.2 → 2.42.3 no changes
- 2.42.1 11/02/23
- 2.42.0 08/21/23
- 2.41.1 → 2.41.2 no changes
- 2.41.0 06/01/23
- 2.40.1 → 2.40.3 no changes
- 2.40.0 03/12/23
- 2.37.3 → 2.39.5 no changes
- 2.37.2 08/11/22
- 2.36.1 → 2.37.1 no changes
- 2.36.0 04/18/22
- 2.35.1 → 2.35.8 no changes
- 2.35.0 01/24/22
- 2.34.1 → 2.34.8 no changes
- 2.34.0 11/15/21
- 2.33.3 → 2.33.8 no changes
- 2.33.2 03/23/22
- 2.33.1 10/12/21
- 2.33.0 08/16/21
- 2.32.1 → 2.32.7 no changes
- 2.32.0 06/06/21
- 2.31.1 → 2.31.8 no changes
- 2.31.0 03/15/21
- 2.30.1 → 2.30.9 no changes
- 2.30.0 12/27/20
- 2.29.1 → 2.29.3 no changes
- 2.29.0 10/19/20
- 2.28.1 no changes
- 2.28.0 07/27/20
- 2.27.1 no changes
- 2.27.0 06/01/20
- 2.26.1 → 2.26.3 no changes
- 2.26.0 03/22/20
- 2.25.2 → 2.25.5 no changes
- 2.25.1 02/17/20
- 2.25.0 01/13/20
- 2.24.1 → 2.24.4 no changes
- 2.24.0 11/04/19
- 2.22.1 → 2.23.4 no changes
- 2.22.0 06/07/19
- 2.21.1 → 2.21.4 no changes
- 2.21.0 02/24/19
- 2.20.1 → 2.20.5 no changes
- 2.20.0 12/09/18
- 2.19.1 → 2.19.6 no changes
- 2.19.0 09/10/18
- 2.18.1 → 2.18.5 no changes
- 2.18.0 06/21/18
- 2.17.1 → 2.17.6 no changes
- 2.17.0 04/02/18
- 2.16.6 12/06/19
- 2.15.4 12/06/19
- 2.14.6 12/06/19
- 2.13.7 05/22/18
- 2.12.5 09/22/17
- 2.11.4 09/22/17
- 2.10.5 09/22/17
- 2.9.5 07/30/17
- 2.8.6 07/30/17
- 2.7.6 no changes
- 2.6.7 05/05/17
- 2.5.6 05/05/17
- 2.4.12 05/05/17
- 2.3.10 09/28/15
- 2.2.3 09/04/15
- 2.1.4 12/17/14
- 2.0.5 12/17/14
SYNOPSIS
git diff-tree [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty] [-t] [-r] [-c | --cc] [--combined-all-paths] [--root] [--merge-base] [<options-diff-usuelles>] <arbre-esque> [<arbre-esque>] [<chemin>…]
DESCRIPTION
Comparer le contenu et le mode des blobs trouvés via deux objets arbre.
S’il n’y a qu’un seul <arbre-esque>donnĂ©, le commit est comparĂ© avec ses parents (voir --stdin ci-dessous).
Notez que git diff-tree peut utiliser l’arbre encapsulĂ© dans un objet commit.
OPTIONS
- -p
- -u
- --patch
-
Générer la rustine (voir Génération du texte de rustine avec -p).
- -s
- --no-patch
-
Supprimer la sortie de la machinerie diff. Utile pour Ă©liminer la sortie des commandes telles que
git show
qui affichent la rustine par dĂ©faut, ou pour supprimer l’effet d’options telles que--patch
, `--stat`qui auraient pu ĂŞtre incluse plus tĂ´t sur la ligne de commande via un alias. - -U<n>
- --unified=<n>
-
Générer des diffs avec <n> lignes de contexte au lieu des trois habituelles. Implique
--patch
. - --output=<fichier>
-
Sortie vers un fichier spécifique au lieu de stdout.
- --output-indicator-new=<caractère>
- --output-indicator-old=<caractère>
- --output-indicator-context=<caractère>
-
SpĂ©cifier le caractère utilisĂ© pour indiquer les lignes nouvelles, anciennes ou contextuelles dans la rustine gĂ©nĂ©rĂ©e. Normalement, il s’agit de +, - et ' ' respectivement.
- --raw
-
GenĂ©rer la diff en format brut. C’est l’option par dĂ©faut.
- --patch-with-raw
-
Synonyme de
-p --raw
. - --indent-heuristic
-
Activer l’heuristique qui dĂ©cale les limites des sections de diff pour rendre les rustines plus faciles Ă lire. C’est l’option par dĂ©faut.
- --no-indent-heuristic
-
DĂ©sactiver l’heuristique d’indentation.
- --minimal
-
Passer plus de temps pour s’assurer que le diff le plus petit possible est produit.
- --patience
-
GĂ©nĂ©rer un diff en utilisant l’algorithme « patience diff ».
- --histogram
-
GĂ©nĂ©rer un diff en utilisant l’algorithme « diff histogramme ».
- --anchored=<texte>
-
GĂ©nĂ©rer un diff en utilisant l’algorithme « diff ancré ».
Cette option peut ĂŞtre spĂ©cifiĂ©e plus d’une fois.
Si une ligne existe dans la source et la destination, n’existe qu’une seule fois, et dĂ©marre avec ce texte, cet algorithme tente d’empĂŞcher qu’elle apparaisse comme une suppression ou une addition dans la sortie. L’algorithme « patience diff » est utilisĂ© en interne.
- --diff-algorithm={patience|minimal|histogram|myers}
-
Choisir un algorithme de diff. Les variantes sont comme suit :
-
default
,myers
-
L’algorithme de diff avide. C’est actuellement celui par dĂ©faut.
-
minimal
-
Passer plus de temps pour s’assurer que le diff le plus petit possible est produit.
-
patience
-
Utiliser l’algorithme « patience diff » pour la gĂ©nĂ©ration de rustine.
-
histogram
-
Cet algorithme Ă©tend l’algorithme patience pour « supporter les Ă©lĂ©ments communs de faible frĂ©quence ».
Par exemple, si vous avez configuré la variable
diff.algorithm
Ă une valeur autre que celle par dĂ©faut et souhaitez utiliser la valeur par dĂ©faut, alors vous devez utiliser l’option--diff-algorithm=default
. -
- --stat[=<largeur>[,<largeur-de-nom>[,<nombre>]]]
-
GĂ©nĂ©rer un diffstat. Par dĂ©faut, autant d’espace que nĂ©cessaire sera utilisĂ© pour la partie du nom de fichier et le reste pour la partie de graphe. La largeur maximum est par dĂ©faut la largeur du terminal, ou 80 colonnes si non connectĂ© Ă un terminal, et peut ĂŞtre outrepassĂ© avec
<largeur>
. La largeur du nom de fichier peut être limitée en fournissant une autre largeur<largeur-de-nom>
après une virgule ou en réglantdiff.statNameWidth=<largeur>
. La largeur de la partie du graphe peut être limitée en utilisant--stat-graph-width=<largeur> ou en réglant `diff.statGraphWidth=<largeur>
. L’utilisation de--stat
ou--stat-graph-width
affecte toutes les commandes qui génèrent un graphique de stat, tandis que réglerdiff.statNameWidth
ordiff.statGraphWidth
n’affecte pasgit format-patch
. En ajoutant un troisième paramètre<nombre>
, vous pouvez limiter la sortie aux premières<nombre>
lignes, suivies de...
s’il y en a plus.Ces paramètres peuvent aussi ĂŞtre positionnĂ©s individuellement avec
--stat-width=<largeur>
,--stat-name-width=<largeur-de-nom>
et--stat-count=<nombre>
. - --compact-summary
-
Afficher un rĂ©sumĂ© condensĂ© de l’information d’entĂŞte Ă©tendu telle que les crĂ©ations ou les suppressions de fichier (« nouveau » ou « disparu », optionnellement « +l » si c’est un lien symbolique) et les modifications de mode (« +x » ou « -x » pour l’ajout et la suppression du bit exĂ©cutable respectivement) dans le diffstat. L’information est affichĂ©e entre la partie nom de fichier et la partie graphe. Implique
--stat
. - --numstat
-
Similaire Ă
--stat
, mais afficher le nombre de lignes ajoutées ou supprimées en notation décimale et le nom de chemin sans abréviation, pour le rendre plus facile à traiter automatiquement. Pour les fichiers binaires, affiche deux-
au lieu de0 0
. - --shortstat
-
N’affiche que la dernière ligne du format
--stat
contenant le nombre total de fichiers modifiĂ©s, de mĂŞme que le nombre de lignes ajoutĂ©es et supprimĂ©es. - -X[<param1,param2,…>]
- --dirstat[=<param1,param2,…>]
-
Afficher la distribution de la quantité relative de modifications pour chaque sous-répertoire. Le comportement de
--dirstat
peut être personnalisé en lui passant une liste de paramètres séparés par des virgules. Les valeurs par défaut sont contrôlées par la variable de configurationdiff.dirstat
(voir git-config[1]). Les paramètres suivants sont disponibles :-
changes
-
Calculer les valeurs de dirstat en comptant les lignes supprimĂ©es de la source ou ajoutĂ©es dans la destination. Ceci ignore la quantitĂ© de purs mouvements de code dans un fichier. En d’autres termes, le rĂ©arrangement de lignes dans un fichier n’est pas comptĂ© autant que les autres modifications. C’est le comportement par dĂ©faut quand aucun paramètre n’est fourni.
-
lines
-
Calculer les valeurs dirstat en faisant l’analyse diff normal par ligne, et en additionnant les totaux de lignes ajoutĂ©es/supprimĂ©es. (Pour les fichiers binaires, compter plutĂ´t les sections de 64 octets, puisque les fichiers binaires n’ont pas de concept de ligne). C’est un comportement de
--dirstat
plus onéreux que le comportementchanges
, mais il compte les lignes rĂ©arrangĂ©es dans un fichier autant que les autres modifications. La sortie rĂ©sultante est cohĂ©rente avec ce que vous obtiendriez avec d’autres options--*stat
. -
files
-
Calculer les valeurs dirstat en comptant le nombre de fichiers changĂ©s. Chaque fichier modifiĂ© compte de façon Ă©gale dans l’analyse dirstat. C’est le comportement
--dirstat
le moins cher en termes de calcul, puisqu’il n’a pas du tout besoin d’analyser le contenu du fichier. -
cumulative
-
Compter les modifications dans un rĂ©pertoire enfant pour le rĂ©pertoire parent. Notez qu’en utilisant
cumulative
, la somme des pourcentages constatés peut dépasser 100 %. Le comportement par défaut (non cumulatif) peut être spécifié avec le paramètrenoncumulative
. - <limite>
-
Un paramètre entier qui spécifie un pourcentage limite (3% par défaut). Les répertoires contribuant moins que ce pourcentage de modifications ne sont pas affichés dans la sortie.
Exemple : ce qui suit va compter les fichiers modifiés, tout en ignorant les répertoires qui contiennent moins de 10 % de la quantité totale de fichiers modifiés et en accumulant les totaux des répertoires enfants dans les répertoires parents :
--dirstat=files,10,cumulative
. -
- --cumulative
-
Synonyme de --dirstat=cumulative
- --dirstat-by-file[=<param1,param2>…]
-
Synonyme de --dirstat=files,<param1>,<param2>….
- --summary
-
Afficher un rĂ©sumĂ© condensĂ© d’information d’entĂŞte Ă©tendu tel que les crĂ©ations, les renommages et les modifications de mode.
- --patch-with-stat
-
Synonyme de
-p --stat
. - -z
-
Quand
--raw
,--numstat
,--name-only
ou--name-status
a été fourni, ne pas modifier les noms de chemin et utiliser des NULs comme terminateurs de champs.Sans cette option, les noms de chemin avec des caractères « inhabituels » sont cités comme expliqué pour la variable de configuration
core.quotePath
(voir git-config[1]). - --name-only
-
Afficher uniquement le nom de chaque fichier modifiĂ© dans l’arbre post-image. Les noms de fichiers sont souvent encodĂ©s en UTF-8. Le dĂ©finir sur
none
rend la sortie de blâme des données non converties. Pour plus d’informations, voir la discussion sur l’encodage dans la page manuelle git-log[1]. - --name-status
-
N’afficher que le ou les noms et statuts de fichier modifiĂ©. Voir la description de l’option
--diff-filter
pour la signification des lettres de statut. Tout comme--name-only
, les noms de fichiers sont souvent encodés en UTF-8. - --submodule[=<format>]
-
Spécifier comment les différences dans les sous-modules sont affichées. Lorsque vous spécifiez
--submodule=short
, le format short (court) est utilisĂ©. Ce format n’affiche que le nom des commits du dĂ©but et de la fin de la plage. Quand--submodule
ou--submodule=log
est spécifié, le format log (journal) est utilisé. Ce format liste les commits dans la plage comme le faitsummary
de git-submodule[1]. Quand--submodule=diff
est spécifié, le format diff est utilisé. Ce format affiche une diff en ligne des modifications dans le sous-module pour la plage de commits. Vaut par défautdiff.submodule
ou le format short si l’option de configuration n’est pas renseignĂ©e. - --color[=<quand>]
-
Afficher des diff colorés.
--color
(sans =<quand>) est identique Ă--color=always
. <quand> peut ĂŞtrealways
,never
ouauto
. - --no-color
-
DĂ©sactiver les diff colorĂ©s. C’est identique Ă
--color=never
. - --color-moved[=<mode>]
-
Les lignes de code dĂ©placĂ©es sont colorĂ©es diffĂ©remment. Le <mode> vaut par dĂ©faut no si l’option n’est pas fournie et zebra si l’option est fournie sans mode. Le mode est une valeur parmi :
- no
-
Les lignes déplacées ne sont pas surlignées.
- default
-
C’est un synonyme de
zebra
. Cela peut changer pour un mode plus raisonnable dans le futur. - plain
-
Toute ligne qui est ajoutĂ©e Ă un endroit et supprimĂ©e Ă un autre endroit sera colorĂ©e avec color.diff.newMoved. Similairement color.diff.oldMoved sera utilisĂ© pour les lignes retirĂ©es qui ont Ă©tĂ© ajoutĂ©es ailleurs dans le diff. Ce mode prend n’importe quelle ligne dĂ©placĂ©e, mais il n’est pas très utile dans une revue pour dĂ©terminer si un bloc de code a Ă©tĂ© dĂ©placĂ© sans permutation.
- blocks
-
Les blocs de texte dĂ©placĂ© d’au moins 20 caractères alphanumĂ©riques sont dĂ©tectĂ©s avidement. Les blocs dĂ©tectĂ©s sont peints avec les couleurs color.diff.oldMoved pour l’ancienne place et color.diff.newMoved pour la nouvelle place. Les blocs adjacents ne peuvent pas ĂŞtre diffĂ©renciĂ©s.
- zebra
-
Les blocs de texte dĂ©placĂ© sont dĂ©tectĂ©s comme dans le mode blocks. Les blocs sont peints en utilisant la couleur color.diff.{old,new}Moved ou color.diff.{old,new}MovedAlternative. La diffĂ©rence entre les deux couleurs indique qu’un nouveau bloc a Ă©tĂ© dĂ©tectĂ©.
- dimmed-zebra
-
Similaire à zebra, mais avec une limitation supplémentaire des parties inintéressantes du code déplacé. Les lignes de frontière de deux blocs adjacents sont considérées intéressantes, le reste est inintéressant.
dimmed_zebra
est un synonyme déconseillé.
- --no-color-moved
-
DĂ©sactiver la dĂ©tection de dĂ©placement. Ce peut ĂŞtre utilisĂ© pour outrepasser les rĂ©glages de configuration. C’est comme
--color-moved=no
. - --color-moved-ws=<modes>
-
Ceci configure comment les espaces sont ignorés lors de la détection de déplacement par
--color-moved
. Ces modes peuvent être fournis comme une liste séparée par des virgules :- no
-
Ne pas ignorer les espaces lors de la détection de déplacement.
- ignore-space-at-eol
-
Ignorer les modifications d’espaces en fin de ligne.
- ignore-space-change
-
Ignorer les modifications de nombre d’espaces. Cela ignore les espaces en fin de ligne et considère toutes les autres sĂ©quences d’un caractère blanc ou plus comme Ă©quivalentes.
- ignore-all-space
-
Ignorer les espaces lors de la comparaison de lignes. Ceci ignore les diffĂ©rences mĂŞme si une ligne a des espaces quand l’autre n’en a aucun.
- allow-indentation-change
-
Ignorer initialement tout espace lors de la dĂ©tection de dĂ©placement, puis grouper les blocs de code dĂ©placĂ© dans un bloc si la modification de blancs est identique par ligne. C’est incompatible avec les autres modes.
- --no-color-moved-ws
-
Ne pas ignorer les blancs lors de la dĂ©tection de dĂ©placement. Ceci peut ĂŞtre utilisĂ© pour outrepasser les rĂ©glages de configuration. C’est identique Ă
--color-moved-ws=no
. - --word-diff[=<mode>]
-
Afficher un diff par mot, en utilisant le <mode> pour délimiter les mots modifiés. Par défaut, les mots sont délimités par des espaces ; voir
--word-diff-regex
ci-dessous. Le <mode> vaut par défaut plain, et peut valoir :- color
-
Surligner les mots modifiĂ©s en n’utilisant que des couleurs. Implique
--color
. - plain
-
Afficher les mots comme
[-supprimé-]
et{+ajouté+}
. Ne pas tenter d’Ă©chapper ces dĂ©limiteurs s’ils apparaissent dans l’entrĂ©e, donc la sortie peut ĂŞtre ambigĂĽe. - porcelain
-
Utiliser un format spécial ligne par ligne destiné à la consommation par script. Les séquences ajoutées/supprimées/non-modifiées sont affichées dans le format diff unifié habituel, commençant par un caractère
+
/-
/` ` en dĂ©but de ligne et en Ă©tendant en fin de ligne. Les retours chariot dans l’entrĂ©e sont reprĂ©sentĂ©s par un tilde~
sur une ligne Ă part. - none
-
DĂ©sactiver Ă nouveau la diff par mots.
Notez qu’en dĂ©pit du nom du premier mode, la couleur est utilisĂ©e pour surligner les parties modifiĂ©es dans tous les modes, si activĂ©e.
- --word-diff-regex=<regex>
-
Utiliser <regex> pour dĂ©cider ce qu’est un mot, au lieu de dĂ©finir un mot comme une sĂ©quence continue de caractères non blancs. Implique aussi
--word-diff
Ă moins qu’elle ait dĂ©jĂ Ă©tĂ© spĂ©cifiĂ©e.Toutes correspondances de <regex> qui ne se chevauchent pas sont considĂ©rĂ©es comme des mots. Tout ce qui se situe entre ces correspondances est considĂ©rĂ© comme de l’espace blanc et ignorĂ© (!) lors du calcul de diffĂ©rences. Vous voudrez peut-ĂŞtre ajouter
|[^[:space:]]
Ă l’expression rĂ©gulière pour ĂŞtre sĂ»r qu’elle englobe tous les caractères non blancs. Une correspondance qui contient un retour Ă la ligne est tronquĂ©e silencieusement (!) au retour Ă la ligne.Par exemple,
--word-diff-regex=.
va traiter chaque caractère comme un mot et de ce fait prĂ©senter les diffĂ©rences caractère par caractère.La regex peut aussi ĂŞtre indiquĂ©e par un pilote de diff ou une option de configuration, voir gitattributes[5] ou git-config[1]. La ligne de commande a prĂ©cĂ©dence sur le pilote de diff ou la configuration. Le pilote de diff a prĂ©cĂ©dence sur l’option de configuration.
- --color-words[=<regex>]
-
Équivalent Ă
--word-diff=color
plus (si une regex a été spécifiée)--word-diff-regex=<regex>
. - --no-renames
-
Désactiver la détection de renommage, même si le fichier de configuration indique de le faire par défaut.
- --[no-]rename-empty
-
S’il faut utiliser les blobs vides comme source de renommage.
- --check
-
Avertir si les modifications introduisent des marqueurs de conflit ou des erreurs d’espaces. Les erreurs d’espaces sont dĂ©finies par l’option de configuration
core.whitespace
. Par dĂ©faut, les espaces en fin de ligne (incluant les lignes ne contenant que des espaces) et le caractère espace suivi immĂ©diatement par une tabulation lors d’une indentation initiale de ligne sont considĂ©rĂ©s comme des erreurs d’espace. Le code d’erreur de sortie est non nul en cas de problèmes trouvĂ©s. Non compatible avec--exit-code
. - --ws-error-highlight=<sorte>
-
Surligner les erreurs d’espace dans les lignes
context
(contexte),old
(ancien) etnew
(nouveau) du diff. Des valeurs multiples sont séparées par des virgules,none
réinitialise les valeurs précédentes,default
rĂ©initialise la liste Ănew
etall
est un raccourci pourold,new,context
. Quand cette option n’est pas fournie et que la variable de configurationdiff.wsErrorHighlight
n’est pas assignĂ©e, seules les erreurs d’espace dans les lignesnew
sont surlignĂ©es. Les erreurs d’espace sont colorĂ©es aveccolor.diff.whitespace
. - --full-index
-
Au lieu de montrer quelques-uns des premiers caractères, montrer les noms complets des objets blob des images prĂ© et post sur la ligne d’index lors de la gĂ©nĂ©ration de la sortie au format patch.
- --binary
-
En plus de
--full-index
, afficher un diff binaire qui peut être appliqué avecgit-apply
. Implique--patch
. - --abbrev[=<n>]
-
Au lieu de montrer le nom de l’objet avec les 40 caractères hexadĂ©cimaux dans le format de diff brut et les lignes d’entĂŞte de l’arbre de diff, montrer le prĂ©fixe le plus court, d’une longueur d’au moins <n> chiffres hexadĂ©cimaux, qui renvoie Ă l’objet de manière unique. Dans le format de sortie de rustine de correctif,
--full-index
a une prioritĂ© plus Ă©levĂ©e, c’est-Ă -dire si--full-index
est spécifié, les noms de blob complets seront affichés indépendamment de--abbrev
. Un nombre de chiffres différent de celui par défaut peut être spécifié avec--abbrev=<n>
. - -B[<n>][/<m>]
- --break-rewrites[=[<n>][/<m>]]
-
Casser les modifications de réécriture complète en paires de suppression et création. Cela sert deux objectifs :
Cela affecte la façon dont un changement qui Ă©quivaut Ă une rĂ©Ă©criture totale d’un fichier apparaĂ®t non pas comme une sĂ©rie de suppressions et d’insertions mĂ©langĂ©es avec quelques lignes qui (par hasard) correspondent entre les deux versions comme contexte, mais comme une simple suppression de tout ce qui est ancien suivi d’une simple insertion de tout ce qui est nouveau, et le nombre
m
contrĂ´le cet aspect de l’option -B (par dĂ©faut 60 %).-B/70%
spĂ©cifie que moins de 30 % de l’original doit rester dans le rĂ©sultat pour que Git le considère comme une rĂ©Ă©criture totale (autrement, la rustine rĂ©sultante sera une sĂ©rie de suppressions et d’insertions mĂ©langĂ©es avec des lignes de contexte).UtilisĂ© avec -M, un fichier complètement rĂ©Ă©crit est aussi considĂ©rĂ© comme la source d’un renommage (habituellement -M ne considère que les fichiers qui ont disparu comme source de renommage), et le nombre
n
contrĂ´le le niveau de l’option -B (par dĂ©faut, 50 %).-B20%
signifie qu’une modification avec des additions et des suppressions reprĂ©sentant 20 % ou plus du contenu du fichier est considĂ©rĂ©e pour ĂŞtre utilisĂ©e comme une source possible pour un renommage en un autre fichier. - -M[<n>]
- --find-renames[=<n>]
-
DĂ©tecter les renommages. Si
n
est spĂ©cifiĂ©, c’est un seuil d’index de similaritĂ© (c-Ă -d la quantitĂ© d’addition/suppression comparĂ© Ă la taille du fichier). Par exemple,-M90%
signifie que Git considĂ©rera un couple suppression/ajout comme renommage si plus de 90 % du fichier n’a pas changĂ©. Sans le signe%
, le nombre doit être lu comme une fraction précédée du point décimal.-M5
devient 0,5, tout comme-M50%
. De mĂŞme,-M05
est identique Ă-M5%
. Pour limiter la détection à des renommages exacts, utilisez-M100%
. L’index de similaritĂ© par dĂ©faut est50%
. - -C[<n>]
- --find-copies[=<n>]
-
DĂ©tecter les copies aussi bien que les renommages. Voir aussi
--find-copies-harder
. Sin
est spécifié, il a la même signification que pour-M<n>
. - --find-copies-harder
-
Pour des raisons de performance, par dĂ©faut, l’option
-C
trouve des copies seulement si le fichier original de la copie a Ă©tĂ© modifiĂ© dans le mĂŞme ensemble de modifications. Ce drapeau fait inspecter Ă la commande les fichiers non modifiĂ©s comme candidats comme source de copie. C’est une opĂ©ration très chère pour des projets importants, donc Ă utiliser avec prĂ©caution. SpĂ©cifier plusieurs fois l’option-C
a le mĂŞme effet. - -D
- --irreversible-delete
-
Omettre la prĂ©-image pour des suppressions, c-Ă -d n’afficher que l’entĂŞte mais pas la diff entre la prĂ©-image et
/dev/null
. La rustine rĂ©sultante n’est pas destinĂ©e Ă ĂŞtre appliquĂ©e avecpatch
ougit apply
 ; C’est seulement pour les personnes qui veulent juste se concentrer sur une revue des modifications. De plus, la sortie manque clairement d’assez d’information pour appliquer la rustine en inverse, mĂŞme manuellement, d’oĂą le nom de l’option.Lorsqu’utilisĂ© conjointement avec
-B
, omettre aussi la prĂ©-image dans la partie suppression d’une paire suppression/crĂ©ation. - -l<num>
-
Les options
-M
et-C
impliquent quelques Ă©tapes prĂ©liminaires qui peuvent dĂ©tecter des sous-ensembles de renommages/copies Ă moindre coĂ»t, suivies d’une partie pour le reste qui compare toutes les destinations non appariĂ©es restantes Ă toutes les sources pertinentes. (Pour les renommages, seules les sources non appariĂ©es restantes sont pertinentes ; pour les copies, toutes les sources originales sont pertinentes). Pour N sources et destinations, cette vĂ©rification exhaustive est en O(N^2). Cette option empĂŞche la partie exhaustive de la dĂ©tection des renommages/copies de s’exĂ©cuter si le nombre de fichiers source/destination impliquĂ©s dĂ©passe le nombre spĂ©cifiĂ©. La valeur par dĂ©faut est diff.renameLimit. Notez qu’une valeur de 0 est traitĂ©e comme illimitĂ©e. - --diff-filter=[(A|C|D|M|R|T|U|X|B)…[*]]
-
Sélectionner seulement les fichiers qui sont Ajoutés (
A
), Copiés (C
), supprimés (DeletedD
), Modifiés (M
), Renommés (R
), ont eu un changement de Type (T
) (c-à -d fichier normal, lien symbolique, sous-module …), sont non fusionnés (UnmergedU
), sont inconnus (UnknownX
) ou ont eu leur appairage cassé (BrokenB
). Toute combinaison de caractères de filtre (incluant aucun) peut être utilisée. Quand*
(Tout-ou-rien) est ajoutĂ© Ă la combinaison, tous les chemins sont sĂ©lectionnĂ©s s’il y a des fichiers qui correspondent aux autres critères dans la comparaison ; s’il n’y a aucun fichier qui correspond aux autres critères, rien n’est sĂ©lectionnĂ©.Aussi, ces lettres majuscules peuvent ĂŞtre spĂ©cifiĂ©es en minuscules pour exclure. Par exemple,
--diff-filter=ad
exclut les chemins ajoutés et supprimés.Notez que toutes les diffs ne peuvent pas présenter tous les types. Par exemple, les entrées copiées et renommées ne peuvent pas apparaître si la détection de ces types est désactivée.
- -S<chaîne>
-
Trouver des diffĂ©rences qui modifient le nombre d’occurrences de la chaĂ®ne spĂ©cifiĂ©e (par ex. addition/suppression) dans un fichier. DestinĂ© Ă l’usage dans des scripts.
C’est utile lorsqu’on cherche un bloc exact de code (comme une struct), et qu’on veut connaĂ®tre l’historique de ce bloc depuis son apparition : utiliser cette fonctionnalitĂ© itĂ©rativement pour fournir le bloc d’une prĂ©-image Ă
-S
et continuer jusqu’Ă obtenir la toute première version du bloc.Les fichiers binaires sont aussi analysĂ©s.
- -G<regex>
-
Rechercher des différences dont le texte de rustine contient les lignes ajoutées/supprimées correspondant à <regex>.
Pour illustrer la différence entre
-S<regex> --pickaxe-regex
et-G<regex>
, considérons un commit contenant la diff suivante dans un même fichier :+ return frotz(nitfol, two->ptr, 1, 0); ... - hit = frotz(nitfol, mf2.ptr, 1, 0);
Alors que
git log -G"frotz\(nitfol"
affichera ce commit,git log -S"frotz\(nitfol" --pickaxe-regex
ne l’affichera pas (parce que le nombre d’occurrences de cette chaĂ®ne n’a pas changĂ©).Ă€ moins que
--text
soit fourni, les rustines de fichiers binaires sans filtre textconv seront ignorĂ©es.Voir l’entrĂ©e pickaxe dans gitdiffcore[7] pour plus d’information.
- --find-object=<id-objet>
-
Rechercher les diffĂ©rences qui modifient le nombre d’occurrences de l’objet indiquĂ©. Similaire Ă
-S
, juste que l’argument est diffĂ©rent en ce qu’elle ne cherche pas une chaĂ®ne particulière mais un identifiant d’objet particulier.L’objet peut ĂŞtre un commit de blob ou de sous-module. Cela implique l’option
-t
dansgit-log
pour trouver aussi des arbres. - --pickaxe-all
-
Quand
-S
ou-G
trouvent une modification, afficher toutes les modifications dans l’ensemble de modifications, pas seulement les fichiers qui contiennent la modification dans <chaĂ®ne>. - --pickaxe-regex
-
Traiter la <chaĂ®ne> fournie Ă
-S
comme une expression régulière POSIX étendue à faire correspondre. - -O<fichier-d-ordre>
-
ContrĂ´ler l’ordre dans lequel les fichiers apparaissent dans la sortie. Ceci passe outre la variable de configuration
diff.orderFile
(voir git-config[1]). Pour annulerdiff.orderFile
, utiliser-O/dev/null
.L’ordre en sortie est dĂ©terminĂ© par l’ordre des motifs glob dans <fichier-d-ordre>. Tous les fichiers dont le nom de chemin correspond au premier motif sont affichĂ©s en premier, tous les fichiers dont le nom de chemin correspond au second motif (mais pas au premier) sont affichĂ©s ensuite, et ainsi de suite. Tous les fichiers dont les noms de chemin qui ne correspondent Ă aucun motif sont affichĂ©s en dernier, comme s’il y avait un motif ramasse-tout Ă la fin du fichier. Si de multiples noms de chemin ont le mĂŞme rang (ils correspondent avec le mĂŞme motif mais pas de motifs antĂ©rieurs), leur ordre relatif d’affichage est l’ordre normal.
<fichier-d-ordre> est analysé comme suit :
-
Les lignes blanches sont ignorĂ©es, de sorte qu’elles peuvent ĂŞtre utilisĂ©es comme sĂ©parateurs pour la lisibilitĂ©.
-
Les lignes commençant par un dièse ("
#
") sont ignorées, elles peuvent donc être utilisées comme commentaires. Ajoutez une barre oblique inverse ("\
") au dĂ©but du motif s’il doit commencer par un dièse. -
Toutes les autres lignes contiennent un motif unique.
Les motifs ont la mĂŞme syntaxe et sĂ©mantique que les motifs utilisĂ©s pour fnmatch(3) sans le drapeau FNM_PATHNAME, sauf qu’un nom de chemin correspond aussi Ă un motif si la suppression de n’importe quel nombre de composants finaux du nom de chemin correspond au motif. Par exemple, le motif "
foo*bar
" correspond Ă "fooasdfbar
" et "foo/bar/baz/asdf
" mais pas Ă "foobarx
". -
- --skip-to=<fichier>
- --rotate-to=<fichier>
-
Supprimer les noms des fichiers avant <fichier> dans la sortie (c’est-Ă -dire "skip to"), ou les dĂ©placer Ă la fin de la sortie (c’est-Ă -dire "rotate to"). Ces options servent principalement lors de la commande
git difftool
, et peuvent ne pas être très utiles ailleurs. - -R
-
Échanger deux entrĂ©es ; c’est-Ă -dire afficher les diffĂ©rences depuis l’index ou avec un fichier sur disque avec le contenu de l’arbre.
- --relative[=<chemin>]
- --no-relative
-
Lorsque lancĂ© depuis un sous-rĂ©pertoire du projet, il peut lui ĂŞtre indiquĂ© d’exclure les modifications hors du rĂ©pertoire et d’afficher les noms de chemins relativement Ă lui avec cette option. Quand vous n’ĂŞtes pas dans un sous-rĂ©pertoire (par ex. dans un dĂ©pĂ´t nu), vous pouvez nommer quel sous-rĂ©pertoire par rapport auquel afficher la sortie en fournissant un argument <chemin>. L’option
--no-relative
peut ĂŞtre utilisĂ©e pour annuler l’option de configurationdiff.relative
et l’option--relative
précédente. - -a
- --text
-
Traiter tous les fichiers comme texte.
- --ignore-cr-at-eol
-
Ignorer les retours chariot en fin de ligne lors de la comparaison.
- --ignore-space-at-eol
-
Ignorer les modifications d’espaces en fin de ligne.
- -b
- --ignore-space-change
-
Ignorer les modifications de nombre d’espaces. Cela ignore les espaces en fin de ligne et considère toutes les autres sĂ©quences d’un caractère blanc ou plus comme Ă©quivalentes.
- -w
- --ignore-all-space
-
Ignorer les espaces lors de la comparaison de lignes. Ceci ignore les diffĂ©rences mĂŞme si une ligne a des espaces quand l’autre n’en a aucun.
- --ignore-blank-lines
-
Ignorer les modifications dont les lignes sont blanches.
- -I<regex>
- --ignore-matching-lines=<regex>
-
Ignorer les modifications dont toutes les lignes correspondent à <regex>. Cette option peut être spécifiée plusieurs fois.
- --inter-hunk-context=<lignes>
-
Afficher le contexte entre des sections de diff, jusqu’au nombre spĂ©cifiĂ© de lignes, fusionnant de ce fait les sections qui sont proches. Par dĂ©faut,
diff.interHunkContext
ou 0 si l’option de configuration n’est pas configurĂ©e. - -W
- --function-context
-
Afficher l’ensemble de la fonction comme lignes de contexte pour chaque modification. Les noms de fonction sont déterminés de la même manière que git diff génère sur les en-têtes de sections de rustines(voir Définir un en-tête personnalisé dans gitattributes[5]).
- --exit-code
-
Faire sortir le programme avec un code similaire Ă diff(1). Autrement dit, il sort avec 1 s’il y avait des diffĂ©rences et 0 signifie aucune diffĂ©rence.
- --quiet
-
Désactiver tous les résultats du programme. Implies
--exit-code
. DĂ©sactive l’exĂ©cution de l’assistant de diff externe dont le code de sortie n’est pas fiable, c’est-Ă -dire que leur option de configuration respectivediff.trustExitCode ' ou `diff.<pilote>.trustExitCode
ou la variable d’environnement GIT_EXTERNAL_DIFF_TRUST_EXIT_CODE sont Ăfalse
. - --ext-diff
-
Permettre l’exĂ©cution d’un assistant externe de diffĂ©rence. Si vous dĂ©finissez un pilote externe de diffĂ©rence avec gitattributes[5], vous avez besoin d’utiliser cette option avec git-log[1] et compagnie.
- --no-ext-diff
-
DĂ©sactiver les pilotes de diff externes.
- --textconv
- --no-textconv
-
Permettre (ou désactiver) le lancement des filtres externes de conversion en texte lors de la comparaison de fichiers binaires. Voir gitattributes[5] pour plus de détails. Comme les filtres textconv sont typiquement des conversions à sens unique, la diff résultante est adaptée à la consommation humaine, mais ne peut pas être appliquée. Pour cette raison, les filtres textconv sont activés par défaut seulement pour git-diff[1] et git-log[1], mais pas pour git-format-patch[1] ou les commandes de plomberie de diff.
- --ignore-submodules[=<quand>]
-
Ignorer les modifications Ă des sous-modules lors de la gĂ©nĂ©ration du diff. <quand> peut valoir "none" (aucun), "untracked" (non-suivi), "dirty" (sale) ou "all" (tout) qui est la valeur par dĂ©faut. L’utilisation de "none" va considĂ©rer comme modifiĂ©s les sous-modules quand ils contiennent soit des fichiers non-suivis ou modifiĂ©s, ou si sa HEAD diffère du commit enregistrĂ© dans le super-projet, et peut ĂŞtre utilisĂ© pour passer outre tout rĂ©glage de l’option ignore dans git-config[1] ou gitmodules[5]. Quand "untracked" est utilisĂ©, les sous-modules ne sont pas considĂ©rĂ©s sales quand ils ne contiennent que du contenu non suivi (mais ils sont quand mĂŞme scannĂ©s pour trouver du contenu modifiĂ©). L’utilisation de "dirty" ignore toutes les modifications Ă l’arbre de travail des sous-modules ; seules les modifications aux commits stockĂ©s dans le super-projet sont affichĂ©es (c’Ă©tait le comportement jusqu’Ă 1.7.0). La valeur "all" cache toutes les modifications des sous-modules.
- --src-prefix=<préfixe>
-
Afficher le préfixe de source fourni au lieu de "a/".
- --dst-prefix=<préfixe>
-
Afficher le préfixe de destination fourni au lieu de "b/".
- --no-prefix
-
N’afficher aucun prĂ©fixe ni de source, ni de destination.
- --default-prefix
-
Utiliser les préfixes source et destination par défaut ("a/" et "b/"). Cela surcharge les variables de configuration telles que configuration telle que
diff.noprefix
,diff.srcPrefix
,diff.dstPrefix
, etdiff.mnemonicPrefix
(voirgit-config
(1)). - --line-prefix=<préfixe>
-
Préfixer avec une chaîne additionnelle chaque ligne de la sortie.
- --ita-invisible-in-index
-
Par dĂ©faut, une entrĂ©e ajoutĂ©e par "git add -N" apparaĂ®t comme un fichier vide existant dans "git diff" et un nouveau fichier dans "git diff --cached". Cette option fait apparaĂ®tre l’entrĂ©e comme un fichier nouveau dans "git diff" et non existant dans "git diff --cached". Cette option peut ĂŞtre inversĂ©e avec
--ita-visible-in-index
. Les deux options sont expérimentales et peuvent être retirées dans le futur.
Pour une explication plus détaillée sur ces options communes, voir aussi gitdiffcore[7].
- <arbre-esque>
-
L’identifiant d’un objet arbre.
- <chemin>…
-
Si elle est fournie, les rĂ©sultats sont limitĂ©s Ă un sous-ensemble de fichiers correspondant Ă l’une des spĂ©cifications de chemin fournies.
- -r
-
Parcourir récursivement les sous-arbres.
- -t
-
Afficher l’entrĂ©e de l’arbre elle-mĂŞme ainsi que les sous-arbres. Implique -r.
- --root
-
Quand
--root
est spĂ©cifiĂ©, le commit initial sera montrĂ© comme un gros Ă©vĂ©nement de crĂ©ation. Ceci est Ă©quivalent Ă une comparaison avec l’arbre NULL. - --merge-base
-
Au lieu de comparer directement les <arbre-esque>s, utiliser la base de fusion entre les deux <arbre-esque>s comme le côté "avant". Il doit y avoir deux <arbre-esque>s donnés et ils doivent tous deux être des commits.
- --stdin
-
Lorsque
--stdin
est spĂ©cifiĂ©, la commande ne prend pas d’arguments <arbre-esque> sur la ligne de commande. Au lieu de cela, elle lit les lignes contenant soit deux <arbre>, un <commit>, ou une liste de <commit> depuis son entrĂ©e standard. (Utilisez un espace simple comme sĂ©parateur).Lorsque deux arbres sont donnĂ©s, comparer le premier arbre avec le second. Lorsqu’un seul commit est donnĂ©, il compare le commit avec ses parents. Les autres commits, lorsqu’ils sont donnĂ©s, sont utilisĂ©s comme s’ils Ă©taient les parents du premier commit.
Lors de la comparaison de deux arbres, l’ID des deux arbres (sĂ©parĂ©s par un espace et terminĂ©s par une nouvelle ligne) est affichĂ© avant la diffĂ©rence. Lors de la comparaison de commits, l’ID du premier (ou du seul) commit, suivi d’une nouvelle ligne, est affichĂ©.
Les drapeaux suivants affectent davantage le comportement lors de la comparaison des commits (mais pas des arbres).
- -m
-
Par défaut, git diff-tree --stdin ne montre pas les différences pour les commits de fusion. Avec ce drapeau, il montre les différences de ce commit depuis tous ses parents. Voir aussi
-c
. - -s
-
Par défaut, git diff-tree --stdin affiche les différences, soit sous forme lisible par la machine (sans
-p
), soit sous forme de rustine (avec-p
). Cette sortie peut ĂŞtre supprimĂ©e. Elle n’est utile qu’avec l’option-v
. - -v
-
Ce drapeau fait en sorte que git diff-tree --stdin affiche également le message de validation avant les différences.
- --pretty[=<format>]
- --format=<format>
-
Formater le contenu des journaux de commits dans un format donnĂ©, oĂą <format> peut ĂŞtre au choix parmi oneline, short, medium, full, fuller, reference, email, raw, format:<chaĂ®ne> et tformat:<chaĂ®ne>. Lorsque <format> n’est rien de ce qui prĂ©cède, et qu’il contient'%format', il agit comme si --pretty=tformat:<format> Ă©tait donnĂ©.
Voir la section "MISE EN FORME" pour plus de dĂ©tails pour chaque format. Lorsque la partie'=<format>' est omise, la valeur par dĂ©faut est’medium'.
Note : vous pouvez spécifier le format par défaut dans la configuration du dépôt
commit.cleanup
(voir git-config[1]). - --abbrev-commit
-
Au lieu d’afficher le nom complet hexadĂ©cimal de 40 octets de l’objet commit, afficher un prĂ©fixe qui nomme l’objet de manière unique. L’option "--abbrev=<n>" (qui modifie Ă©galement la sortie diff, si elle est affichĂ©e) peut ĂŞtre utilisĂ©e pour spĂ©cifier la longueur minimale du prĂ©fixe.
Cela devrait rendre "--pretty=oneline" beaucoup plus lisible pour les personnes utilisant des terminaux Ă 80 colonnes.
- --no-abbrev-commit
-
Afficher le nom complet hexadĂ©cimal de 40 octets de l’objet commit. Ceci annule
--abbrev-commit
, qu’elle soit explicitement ou implicitement impliquĂ©e par d’autres options telles que "--oneline". Elle remplace Ă©galement la variablelog.abbrevCommit
. - --oneline
-
C’est un raccourci pour "--pretty=oneline --abbrev-commit" utilisĂ©s ensemble.
- --encoding=<codage>
-
Les objets commit enregistrent l’encodage utilisĂ© pour le message de log dans leur en-tĂŞte d’encodage ; cette option peut ĂŞtre utilisĂ©e pour indiquer Ă la commande de recoder le message de log du commit dans l’encodage prĂ©fĂ©rĂ© par l’utilisateur. Pour les commandes hors plomberie, cette valeur par dĂ©faut est UTF-8. Notez que si un objet prĂ©tend ĂŞtre encodĂ© en
X
et que nous sortons enX
, nous allons sortir l’objet Ă l’identique ; cela signifie que les sĂ©quences invalides dans la livraison originale peuvent ĂŞtre copiĂ©es dans la sortie. De mĂŞme, si iconv(3) ne parvient pas Ă convertir le commit, nous produirons tranquillement l’objet original tel quel. - --expand-tabs=<n>
- --expand-tabs
- --no-expand-tabs
-
Effectuer une extension de tabulation (remplacer chaque tabulation par suffisamment d’espaces pour remplir jusqu’Ă la colonne d’affichage suivante qui est un multiple de'<n>') dans le message de journal avant de l’afficher dans la sortie.
--expand-tabs
est un raccourci pour--expand-tabs=8
, et--no-expand-tabs
est un raccourci pour--expand-tabs=0
, qui dĂ©sactive l’extension des tabulations.Par dĂ©faut, les tabulations sont dĂ©veloppĂ©es par les formatages qui indentent le message de log par 4 espaces (c’est-Ă -dire medium, qui est le format par dĂ©faut, full, fuller).
- --notes[=<ref>]
-
Afficher les notes (voir git-notes[1]) qui annotent le commit, lors de l’affichage du message du journal de commit. C’est la valeur par dĂ©faut pour les commandes
git log
,git show
etgit whatchanged
lorsqu’il n’y a pas d’option--pretty
,--format
ou--oneline
sur la ligne de commande.Par défaut, les notes affichées proviennent des références de notes listées dans les variables
core.notesRef
etnotes.displayRef
(ou les substitutions d’environnement correspondantes). Voir git-config[1] pour plus de dĂ©tails.Avec un argument optionnel'<ref>', utiliser la rĂ©fĂ©rence pour trouver les notes Ă afficher. La rĂ©fĂ©rence peut spĂ©cifier le nom complet de rĂ©fĂ©rence quand elle commence par
refs/notes/
 ; quand elle commence parnotes/
,refs/
et sinonrefs/notes/
est préfixé pour former le nom complet de la référence.Plusieurs options --notes peuvent être combinées pour contrôler quelles notes sont affichées. Exemples : "--notes=foo" affichera uniquement les notes de "refs/notes/foo" ; "--notes=foo --notes" affichera les notes de "refs/notes/foo" et des ref(s) de notes par défaut.
- --no-notes
-
Ne pas afficher les notes. Ceci annule l’option
--notes
ci-dessus, en rĂ©initialisant la liste des rĂ©fĂ©rences de notes Ă partir desquelles les notes sont affichĂ©es. Les options sont analysĂ©es dans l’ordre donnĂ© sur la ligne de commande, par exemple "--notes --notes=foo --no-notes --notes=bar" n’affichera que les notes "refs/notes/bar". - --show-notes-by-default
-
Afficher les notes par défaut à moins que des options pour afficher des notes spécifiques ne soient fournies.
- --show-notes[=<reférence>]
- --[no-]standard-notes
-
Ces options sont obsolètes. Utilisez plutôt les options --notes/--no-notes ci-dessus.
- --show-signature
-
VĂ©rifier la validitĂ© d’un objet commit signĂ© en passant la signature Ă
gpg --verify
et afficher le résultat.
- --no-commit-id
-
git diff-tree produit une ligne avec l’ID de commit lorsque cela est applicable. Ce drapeau supprime la sortie de l’ID de commit.
- -c
-
Ce drapeau change la façon dont un commit de fusion est affichĂ© (ce qui signifie qu’il n’est utile que lorsque la commande est donnĂ©e une <arbre-esque>, ou
--stdin
). Il montre les diffĂ©rences entre chacun des parents et le rĂ©sultat de la fusion simultanĂ©ment au lieu de montrer les diffĂ©rences par paire entre un parent et le rĂ©sultat un par un (ce que fait l’option-m
). De plus, elle ne liste que les fichiers qui ont été modifiés depuis tous les parents. - --cc
-
Ce drapeau change la façon dont une rustine de commit de fusion est affichĂ©e, d’une manière similaire Ă l’option
-c
. Il implique les options-c
et-p
et compresse davantage la sortie de la rustine en omettant les sections inintĂ©ressantes dont le contenu dans les parents n’a que deux variantes et le rĂ©sultat de la fusion choisit l’une d’entre elles sans modification. Lorsque toutes les sections sont inintĂ©ressantes, le commit lui-mĂŞme et le message du journal de validation ne sont pas affichĂ©s, comme dans tout autre cas de "diff vide". - --combined-all-paths
-
Cet indicateur fait en sorte que les diffs combinĂ©s (utilisĂ©s pour les commits de fusion) listent le nom du fichier de tous les parents. Il n’a donc d’effet que lorsque -c ou --cc sont spĂ©cifiĂ©s, et n’est probablement utile que si des changements de nom de fichier sont dĂ©tectĂ©s (c.-Ă -d. lorsque la dĂ©tection de renommage ou de copie a Ă©tĂ© demandĂ©e).
- --always
-
Afficher le commit lui-mĂŞme et le message du journal de commit mĂŞme si le diff lui-mĂŞme est vide.
FORMATS AUTOMATIQUES
Si le commit est une fusion, et si la mise en forme n’est pas oneline, email ou raw, une ligne supplĂ©mentaire est insĂ©rĂ©e avant la ligne Author:. Cette ligne commence par "Merge:" et les empreintes des commits ancĂŞtres sont affichĂ©es, sĂ©parĂ©es par des espaces. Notez que les commits Ă©numĂ©rĂ©s ne sont pas nĂ©cessairement la liste des commits parents directs si vous avez limitĂ© votre vue de l’historique : par exemple, si vous n’ĂŞtes intĂ©ressĂ© que par les modifications liĂ©es Ă un certain rĂ©pertoire ou fichier.
Il existe plusieurs formats intĂ©grĂ©s, et vous pouvez dĂ©finir des formats supplĂ©mentaires en dĂ©finissant une option pretty.<nom> config Ă soit un nouveau nom de format, soit une chaĂ®ne’format:', comme dĂ©crit ci-dessous (voir git-config[1]). Voici le dĂ©tail des formats intĂ©grĂ©s :
-
oneline
<empreinte> <ligne-de-titre>
C’est conçu pour ĂŞtre aussi compact que possible.
-
short
commit <empreinte> Author: <auteur>
<ligne-de-titre>
-
medium
commit <empreinte> Author: <auteur> Date: <date d'auteur>
<ligne-de-titre>
<message-de-validation-complet>
-
full
commit <empreinte> Author: <auteur> Commit: <validateur>
<ligne-de-titre>
<message-de-validation-complet>
-
fuller
commit <empreinte> Author: <auteur> AuthorDate: <date d'auteur> Commit: <validateur> CommitDate: <date de validation>
<ligne-de-titre>
<message-de-validation-complet>
-
reference
<empreinte-abrégée> (<ligne-de-titre>, <date-d'auteur-courte>)
Ce format est utilisé pour faire référence à un autre commit dans un message de validation et est le même que
--pretty='format:%C(auto)%h (%s, %ad)'
. Par défaut, la date est formatée avec--date=short
Ă moins qu’une autre option--date
ne soit explicitement spécifiée. Comme pour toutformat:
avec des espaces rĂ©servĂ©s de format, sa sortie n’est pas affectĂ©e par d’autres options comme--decorate
et--walk-reflogs
. -
email
From <empreinte> <date> From: <auteur> Date: <date d'auteur> Subject: [PATCH] <ligne de titre>
<message-de-validation-complet>
-
mboxrd
Comme email, mais les lignes dans le message de validation commençant par "From" (prĂ©cĂ©dĂ© de zĂ©ro ou plus ">") sont citĂ©es avec ">" pour ne pas ĂŞtre confondues avec le dĂ©but d’un nouveau commit.
-
raw
Le format’raw' montre le commit entier telle qu’elle est stockĂ©e dans l’objet commit. Notamment, les empreintes sont affichĂ©es dans leur intĂ©gralitĂ©, que --abbrev ou --no-abbrev soient utilisĂ©s ou non, et l’information parents indiquent le vĂ©ritable commit parent, sans tenir compte des greffes ou de la simplification d’historique. Notez que ce format affecte la façon dont les commits sont affichĂ©s, mais pas la façon dont la diffĂ©rence est affichĂ©e, par exemple avec
git log --raw
. Pour obtenir les noms complets des objets dans un format de diff brut, utilisez--no-abbrev
. -
format:<chaîne-de-formatage>
Le format format:<chaĂ®ne-de-formatage> vous permet de spĂ©cifier quelles informations vous voulez afficher. Cela fonctionne un peu comme le format printf, Ă l’exception notable que vous obtenez une nouvelle ligne avec'%n' au lieu de'\n'.
Par exemple,format : "L’auteur de %h Ă©tait %an, %ar%nL’entĂŞte Ă©tait >>%s<<<%n" afficherait quelque chose comme ceci :
L'auteur de fe6e0ee Ă©tait Junio C Hamano, 23 hours ago L'entĂŞte Ă©tait >>t4119: test autocomputing -p<n> for traditional diff input.<<
Les espaces réservés sont :
-
Les places qui s’Ă©tendent Ă un seul caractère littĂ©ral :
-
Espaces réservés qui affectent le formatage des espaces réservés ultérieurs :
- %Cred
-
passe la couleur au rouge
- %Cgreen
-
passe la couleur au vert
- %Cblue
-
passe la couleur au bleu
- %Creset
-
réinitialise la couleur
- %C(…)
-
spĂ©cification de couleur, telle que dĂ©crite sous Valeurs dans la section "FICHIER DE CONFIGURATION" de git-config[1]. Par dĂ©faut, les couleurs ne sont affichĂ©es que lorsqu’elles sont activĂ©es pour la sortie des journaux (par
color.diff
,color.ui
, ou--color
, et en respectant les paramètresauto
du premier si nous allons sur un terminal).%C(auto,...)
est accepté comme synonyme historique de la valeur par défaut (par exemple,%C(auto,red)
). Spécifier%C(always,...)
affichera les couleurs mĂŞme si la couleur n’est pas activĂ©e autrement (bien qu’il faille toujours utiliser--color=always
pour activer la couleur pour toute la sortie, y compris ce format et tout ce que git peut colorier).auto
seul (c’est-Ă -dire%C(auto)
) activera la coloration automatique sur les places suivantes jusqu’Ă ce que la couleur soit Ă nouveau changĂ©e. - %m
-
marque Ă gauche (
<
), Ă droite (>
) ou de limite (-
) - %w([<w>[,<i1>[,<i2>]]])
-
basculer de rebouclage de ligne, comme l’option -w de git-shortlog[1].
- %<( <N> [,trunc|ltrunc|mtrunc])
-
faire en sorte que l’espace réservé suivant prenne au moins N largeurs de colonne, en remplissant les espaces à droite si nécessaire. Tronquer éventuellement (avec points de suspension ..) à gauche (ltrunc) .. che, le milieu (mtrunc) mi.. eu, ou la droite (trunc) 'dr.. ', si la sortie est plus longue que N colonnes. Note 1 : cette troncation ne fonctionne correctement qu’avec N >= 2. Note 2 : les espaces autour des valeurs N et M (voir ci-dessous) sont facultatifs. Remarque 3 : Les emojis et autres caractères larges prendront deux colonnes d’affichage, ce qui peut dépasser les limites des colonnes. Note 4 : les marques de combinaison de caractères décomposés peuvent être mal placées au niveau des limites de rembourrage.
- %<|( <M> )
-
faire en sorte que l’espace réservé suivant prenne au moins jusqu’à la Mième colonne d’affichage, en remplissant les espaces sur la droite si nécessaire. Utilisez des valeurs M négatives pour les positions de colonne mesurées à partir du bord droit de la fenêtre du terminal.
- %>( <N> ), %>|( <M> )
-
similaire Ă %<( <N> ), %<|( <M> ) respectivement, mais les espaces d’alignement Ă gauche
- %>>( <N> ), %>>|( <M> )
-
similaire Ă %>( <N> ), %>|( <M> ) respectivement, sauf que si le prochain espace rĂ©servĂ© prend plus d’espaces que prĂ©vu et qu’il y a des espaces Ă sa gauche, utiliser ces espaces
- %><( <N> ), %><|( <M> )
-
similaire Ă %<( <N> ), %<|( <M> ) respectivement, mais en dĂ©calant des deux cĂ´tĂ©s (c’est-Ă -dire que le texte est centrĂ©)
-
Espaces réservés développant les informations extraites du commit :
- %H
-
empreinte du commit
- %h
-
empreinte abrégée du commit
- %T
-
empreinte de l’arbre
- %t
-
empreinte abrĂ©gĂ©e de l’arbre
- %P
-
empreintes des parents
- %p
-
empreintes abrégés des parents
- %an
-
nom de l’auteur
- %aN
-
nom de l’auteur (en respectant .mailmap, voir git-shortlog[1] ou git-blame[1])
- %ae
-
e-mail de l’auteur
- %aE
-
e-mail de l’auteur (en respectant .mailmap, voir git-shortlog[1] ou git-blame[1])
- %al
-
partie locale de l’e-mail de l’auteur (la partie avant le signe "@")
- %aL
-
partie locale de l’auteur (voir %al) en respectant .mailmap, voir git-shortlog[1] ou git-blame[1])
- %ad
-
date de l’auteur (le format respecte l’option --date=)
- %aD
-
date d’auteur, style RFC2822
- %ar
-
date de l’auteur, date relative
- %at
-
date de l’auteur, horodatage UNIX
- %ai
-
date de création, format de type ISO 8601
- %aI
-
date d’auteur, format strict ISO 8601
- %as
-
date d’auteur, format court (
AAAA-MM-JJ
) - %ah
-
date de l’auteur, style humain (comme l’option
--date=human
de git-rev-list[1]) - %cn
-
nom du validateur
- %cN
-
nom du validateur (en respectant .mailmap, voir git-shortlog[1] ou git-blame[1])
- %ce
-
e-mail du validateur
- %cE
-
e-mail du validateur (en respectant .mailmap, voir git-shortlog[1] ou git-blame[1])
- %cl
-
partie locale de l’e-mail du validateur (la partie avant le signe "@")
- %cL
-
partie locale du validateur (voir %cl) en respectant .mailmap, voir git-shortlog[1] ou git-blame[1])
- %cd
-
date de validation (le format respecte l’option --date=)
- %cD
-
date de validation, style RFC2822
- %cr
-
date de validation, date relative
- %ct
-
date de validation, horodatage UNIX
- %ci
-
date de validation, format de type ISO 8601
- %cI
-
date de validation, format ISO 8601 strict
- %cs
-
date de validation, format court (
AAAA-MM-JJ
) - %ch
-
date du validateur, style humain (comme l’option
--date=human
de git-rev-list[1]) - %d
-
les noms de ref, comme l’option --decorate de git-log[1].
- %D
-
les noms des refs, sans encadrement par « ( » et « ) ».
- %(decorate[:<options>])
-
noms de rĂ©fs avec des dĂ©corations personnalisĂ©es. La chaĂ®ne "decorate" peut ĂŞtre suivie de deux points et de zĂ©ro ou plus options sĂ©parĂ©es par des virgules. Les valeurs d’option peuvent contenir des codes de formatage litĂ©raux. Ils doivent ĂŞtre utilisĂ©s pour les virgules (
%x2C
) et les parenthèses de fermeture (%x29
), en raison de leur rĂ´le dans la syntaxe optionnelle.-
prefix=<valeur> : Affiché avant la liste des noms de réf. Valeur pas défaut "
(
". -
suffix= <valeur> : affiché après la liste des noms réf. Valeur par défaut à "
)
". -
separator=<valeur> : affiché entre les noms de réf. Valeur par défaut à "
,
". -
pointer=<valeur> : Affichage entre HEAD et la branche pointée, le cas échéant. Par défaut "
->
". -
tag= <valeur> : Afficher avant les noms des étiquettes. par défaut "
tag:
".
-
Par exemple, pour produire des décorations sans enveloppe ni étiquettes, et des espaces comme séparateurs :
+
%(decorate:prefix=,suffix=,tag=,separator= )
- %(describe[:<options>])
-
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 de zéro ou plusieurs options séparées par des virgules. Les descriptions peuvent être incohérentes lorsque des étiquettes sont ajoutées ou supprimées en même temps.-
tags[=<valeur-booléenne>] : Au lieu de ne considérer que les étiquettes annotées, prendre également en compte les étiquettes légères.
-
abbrev=<nombre> : Au lieu d’utiliser le nombre de chiffres hexadĂ©cimaux par dĂ©faut (qui varie en fonction du nombre d’objets dans le dĂ©pĂ´t avec une valeur par dĂ©faut de 7) du nom d’objet abrĂ©gĂ©, utiliser <nombre> chiffres, ou autant de chiffres que nĂ©cessaire pour former un nom unique.
-
match=<motif> : Ne considère que les étiquettes correspondant au motif
glob(7)
donnĂ©, Ă l’exclusion du prĂ©fixe "refs/tags/". -
exclude=<motif>' : Ne pas prendre en compte les Ă©tiquettes correspondant au motif
glob(7)
donné, en excluant le préfixe "refs/tags/".
-
- %S
-
nom de ref fourni en ligne de commande par lequel le commit a été atteint (comme
git log --source
), ne fonctionne qu’avecgit log
- %e
-
encodage
- %s
-
titre
- %f
-
ligne de titre aseptisée, convenant pour un nom de fichier
- %b
-
corps
- %B
-
corps brut (sujet et corps non enveloppés)
- %N
-
notes du commit
- %GG
-
message de vérification brut de GPG pour un commit signé
- %G?
-
afficher "G" pour une bonne signature (valide), "B" pour une mauvaise signature, "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 (par exemple la clé est manquante) et "N" pour aucune signature
- %GS
-
affiche le nom du signataire d’un commit signĂ©
- %GK
-
afficher la clé utilisée pour signer un commit signé
- %GF
-
afficher l’empreinte digitale de la clĂ© utilisĂ©e pour signer un commit signĂ©
- %GP
-
afficher l’empreinte digitale de la clĂ© primaire dont la sous-clĂ© a Ă©tĂ© utilisĂ©e pour signer un commit signĂ©
- %GT
-
afficher le niveau de rouille de la clé utilisée pour signer un commit signé
- %gD
-
sélecteur de reflog, p. ex.,
refs/stash@{1}
ourefs/stash@{2 minutes ago}
; le format suit les règles dĂ©crites pour l’option-g
. La partie avant@
est le nom de la rĂ©fĂ©rence tel qu’il est donnĂ© sur la ligne de commande (doncgit log -g refs/heads/master
produiraitrefs/heads/master@{0}
). - %gd
-
sĂ©lecteur de reflog raccourci ; identique Ă
%gD
, mais la partie refname est raccourcie pour la lisibilité humaine (ainsirefs/heads/master
devient simplementmaster
). - %gn
-
nom de l’identitĂ© reflog
- %gN
-
nom de l’identitĂ© reflog (en respectant .mailmap, voir git-shortlog[1] ou git-blame[1])
- %ge
-
adresse de courriel d’identitĂ© reflog
- %gE
-
e-mail de l’identitĂ© reflog (en respectant .mailmap, voir git-shortlog[1] ou git-blame[1])
- %gs
-
titre du reflog
- %(trailers[:<options>])
-
afficher les lignes ajoutées du corps comme interprétées par git-interpret-trailers[1]. La chaîne
trailers
peut ĂŞtre suivie de deux-points et de zĂ©ro ou plus d’options sĂ©parĂ©es par des virgules. Si une option est fournie plusieurs fois, la dernière option l’emporte.-
key=<clĂ©>' : affiche uniquement les chaĂ®nes d’attributs avec la <clĂ©> spĂ©cifiĂ©e. L’appariement se fait de façon insensible Ă la casse et la virgule finale est facultative. Si l’option est donnĂ©e plusieurs fois, les lignes d’attributs correspondant Ă l’une des clĂ©s sont affichĂ©es. Cette option active automatiquement l’option
only
de sorte que les lignes non-attribut dans le bloc d’attributs soient masquĂ©es. Si ce n’est pas dĂ©sirĂ©, ce peut ĂŞtre dĂ©sactivĂ© aveconly=false
. Par exemple,%(trailers:key=Reviewed-by)
affiche les lignes d’attribut avec la clĂ©Reviewed-by
. -
only [=<BOOLÉEN>]' : choisir si les lignes non annotées du bloc de lignes finales doivent être incluses.
-
separator=<sep> : spĂ©cifie le sĂ©parateur insĂ©rĂ© entre les lignes d’attributs. Par dĂ©faut, un caractère de saut de ligne. La chaĂ®ne <sep> peut contenir les codes de formatage littĂ©ral dĂ©crits ci-dessus. Pour utiliser la virgule comme sĂ©parateur, il faut utiliser
%x2C
car sinon elle serait analysée comme option suivante. Par exemple,%(trailers:key=Ticket,separator=%x2C )
affiche toutes les lignes d’attributs dont la clĂ© est « Ticket » sĂ©parĂ©es par une virgule et un espace. -
unfold[=<boolĂ©en>] : se comporter comme si l’option
--unfold
d’interprĂ©tation des attributs Ă©tait donnĂ©e. Par exemple,%(trailers:only,unfold=true)
dĂ©plie et affiche toutes les lignes d’attributs. -
keyonly [=<booléen>] : ne montrer que la partie principale du bloc final.
-
valueonly [=<boolĂ©en>] : n’affichez que la partie valeur des lignes finales.
-
key_value_separator=<sep> : spécifier le séparateur inséré entre la clé et la valeur dans chaque ligne terminale. Par défaut " :". Sinon elle partage la même sémantique que separator=<sep> ci-dessus.
-
-
Note
|
Certains espaces rĂ©servĂ©s peuvent dĂ©pendre d’autres options donnĂ©es au moteur de traversĂ©e de rĂ©visions. Par exemple, les options de reflog %g* insĂ©reront une chaĂ®ne vide Ă moins que nous ne traversions des entrĂ©es de reflog (par exemple, par git log -g ). Les caractères de remplissage %d et %D utiliseront le format de dĂ©coration « short » si --decorate n’a pas dĂ©jĂ Ă©tĂ© fourni sur la ligne de commande.
|
Les options booléennes acceptent une valeur optionnelle [=<booléen>]
. Les valeurs true
, false
, on
, off
etc. sont toutes acceptées. Voir la sous-section "booléen" dans "EXEMPLES" dans git-config[1]. Si une option booléenne est donnée sans valeur, elle est activée.
Si vous ajoutez un +
(signe plus) après'%' d’un espace rĂ©servĂ©, un saut de ligne est insĂ©rĂ© immĂ©diatement avant l’expansion si et seulement si l’espace rĂ©servĂ© se dĂ©veloppe en une chaĂ®ne non vide.
Si vous ajoutez un -
(signe moins) après'%' d’un caractère de remplissage, tous les sauts de ligne consĂ©cutifs prĂ©cĂ©dant immĂ©diatement l’expansion sont supprimĂ©s si et seulement si l’espace rĂ©servĂ© se dĂ©veloppe en une chaĂ®ne vide.
Si vous ajoutez un ‘`(espace) après’%' d’un espace rĂ©servĂ©, un espace est insĂ©rĂ© immĂ©diatement avant l’expansion si et seulement si l’espace rĂ©servĂ© se dĂ©veloppe en une chaĂ®ne non vide.
-
tformat:
Le format’tformat:' fonctionne exactement comme’format:', sauf qu’il fournit une sĂ©mantique « terminator » au lieu de « separator ». En d’autres termes, chaque commit a le caractère de fin de message (habituellement une nouvelle ligne) ajoutĂ©, plutĂ´t qu’un sĂ©parateur placĂ© entre les entrĂ©es. Cela signifie que l’entrĂ©e finale d’un format Ă une ligne se terminera correctement par une nouvelle ligne, tout comme le format "oneline". Par exemple :
$ git log -2 --pretty=format:%h 4da45bef \ | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/' 4da45be 7134973 -- NO NEWLINE $ git log -2 --pretty=tformat:%h 4da45bef \ | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/' 4da45be 7134973
De plus, toute chaîne non reconnue qui contient un
%
est interprétée comme si elle avaittformat:
devant elle. Par exemple, ces deux éléments sont équivalents :$ git log -2 --pretty=tformat:%h 4da45bef $ git log -2 --pretty=%h 4da45bef
Format brut de sortie
Les formats bruts de sortie de "git-diff-index", "git-diff-tree", "git-diff-files" et "git diff --raw" sont très similaires.
Ces commandes comparent toutes deux ensembles de choses ; ce qui est comparé varie :
- git-diff-index <arbre-esque>
-
compare l'<arbre-esque> et les fichiers du système de fichiers.
- git-diff-index --cached <arbre-esque>
-
compare l'<arbre-esque> et l’index.
- git-diff-tree [-r] <arbre-esque-1> <arbre-esque-2> [<motif>…]
-
Compare les arbres nommés par les deux arguments.
- git-diff-files [<motif>…]
-
compare l’index et les fichiers sur le système de fichier.
La commande "git-diff-tree" dĂ©bute sa sortie par l’empreinte de ce qui est comparĂ©. Ensuite, toutes les commandes affichent une ligne par fichier modifiĂ©.
une ligne affichée est formatée de la manière suivante :
édition en place :100644 100644 bcd1234 0123456 M fichier0 copie édition :100644 100644 abcd123 1234567 C68 fichier1 fichier2 édition renommage :100644 100644 abcd123 1234567 R86 fichier1 fichier3 création :000000 100644 0000000 1234567 A fichier4 suppression :100644 000000 1234567 0000000 D fichier5 non fusionnné :000000 000000 0000000 0000000 U fichier6
C’est-Ă -dire, de gauche Ă droite :
-
deux points.
-
le mode pour "src" ; 000000 si c’est une crĂ©ation ou non fusionnĂ©.
-
un espace.
-
mode pour "dst" ; 000000 si suppression ou non-fusionné.
-
un espace.
-
sha1 de "src", 0{40} si création ou non fusionné.
-
un espace.
-
sha1 de "dst", 0{40} si suppression, non fusionnĂ© ou "arbre de travail dĂ©synchronisĂ© par rapport Ă l’index".
-
un espace.
-
status, suivi optionnellement d’un nombre score.
-
une tabulation ou un caractère NUL si l’option
-z
est utilisée. -
chemin pour "src"
-
une tabulation ou un caractère NUL si l’option
-z
est utilisĂ©e ; n’existe que pour C ou R. -
chemin pour "dst"Â ; n’existe que pour C ou R.
-
un caractère LF ou NUL si l’option
-z
est utilisĂ©e, pour terminer l’enregistrement.
Les lettres de statut possibles sont :
-
AÂ : addition d’un fichier
-
CÂ : copie d’un fichier en un autre
-
DÂ : suppression (deletion) d’un fichier
-
MÂ : modification de contenu ou du mode d’un fichier
-
RÂ : renommage d’un fichier
-
T : modification du type d’un fichier (fichier rĂ©gulier, lien symbolique ou sous-module)
-
U : le fichier est non-fusionné (unmerged) (vous devez finir la fusion avant de le valider)
-
X : type de modification "inconnue" (probablement un bug, veuillez le signaler)
Les lettres de statut C et R sont toujours suivies d’un score (indiquant le pourcentage de similaritĂ© entre la source et la cible du dĂ©placement ou de la copie). La lettre de statut M peut ĂŞtre suivie d’un score (indiquant le pourcentage de dissimilaritĂ©) pour une rĂ©Ă©criture de fichier.
Le sha1 de "dst" est tout Ă zĂ©ro si le fichier sur le système de fichiers est dĂ©synchronisĂ© par rapport Ă l’index.
Exemple :
:100644 100644 5be4a4a 0000000 M fichier.c
Sans l’option -z
, les noms de chemin avec des caractères « inhabituels » sont cités comme expliqué pour la variable de configuration core.quotePath
(voir git-config[1]). Lors de l’utilisation de -z
le fichier est affiché verbatim et la ligne est terminée par un octet NUL.
format diff pour les fusions
"git-diff-tree", "git-diff-files" et "git-diff --raw" peuvent prendre une option -c
ou --cc
pour générer une sortie diff pour les commits de fusion. La sortie diffère du format décrit ci-dessus sur les points suivants :
-
il y a un caractère deux points pour chaque parent
-
il y a plus de modes "src" et de sha1 "src"
-
les statut est la concaténation des caractères de statut de chaque parent
-
pas de nombre optionnel de "score"
-
chemin(s) d’accès du fichier sĂ©parĂ©(s) par des tabulations
Pour -c
et --cc
, seule la destination ou le chemin final est affichĂ© mĂŞme si le fichier a Ă©tĂ© renommĂ© d’un cĂ´tĂ© ou de l’autre de l’historique. Avec --combined-all-paths
, le nom du chemin dans chaque parent est affiché suivi du nom du chemin dans le commit de fusion.
Exemples pour -c
et --cc
sans --combined-all-paths
 :
::100644 100644 100644 fabadb8 cc95eb0 4866510 MM desc.c ::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM bar.sh ::100644 100644 100644 e07d6c5 9042e82 ee91881 RR phooey.c
Exemples oĂą --combined-all-paths
a été ajouté à -c
ou --cc
 :
::100644 100644 100644 fabadb8 cc95eb0 4866510 MM desc.c desc.c desc.c ::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM foo.sh bar.sh bar.sh ::100644 100644 100644 e07d6c5 9042e82 ee91881 RR fooey.c fuey.c phooey.c
Notez que le diff combiné ne liste que les fichiers qui ont été modifiés depuis tous leurs parents.
Génération du texte de rustine avec -p
ExĂ©cuter git-diff[1], git-log[1], git-show[1], git-diff-index[1], git-diff-tree[1] ou git-diff-files[1] avec l’option -p
produit le texte de rustine. Vous pouvez personnaliser la crĂ©ation du texte de rustine via les variables d’environnement GIT_EXTERNAL_DIFF
et GIT_DIFF_OPTS
(voir git[1]), et l’attribut diff
(voir gitattributes[5]).
L’option produit quelque chose lĂ©gèrement diffĂ©rent du format diff traditionnel :
-
Il est prĂ©cĂ©dĂ© d’un entĂŞte "git diff" qui ressemble Ă ceci :
diff --git a/fichier1 b/fichier2
les noms de fichiers sous
a/
etb/
sont identiques Ă moins qu’il y ait eu un renommage ou une copie, mĂŞme pour un crĂ©ation ou une suppression,/dev/null
n’est pas utilisĂ© Ă la place des noms de fichiera/
ou`b/`.Quand un renommage ou un copie est décrit,
fichier1
etfichier2
indiquent les noms du fichier source et du fichier cible, respectivement. -
Suivent un ligne ou plus d’entĂŞte Ă©tendu :
old mode <mode> new mode <mode> deleted file mode <mode> new file mode <mode> copy from <chemin> copy to <chemin> rename from <chemin> rename to <chemin> similarity index <nombre> dissimilarity index <nombre> index <empreinte>..<empreinte> <mode>
Les modes de fichier sont affichés comme des nombres à 6 chiffres en octal incluant le type de fichier et les bits de permission.
Les noms de chemin dans les entĂŞtes Ă©tendus n’incluent pas les prĂ©fixes
a/
etb/
.L’index de similaritĂ© et le pourcentage de lignes inchangĂ©es et l’index de dissimilaritĂ© est le pourcentage de lignes changĂ©es. Il est arrondi Ă l’entier infĂ©rieur, suivi du signe pourcent. Une valeur d’index de similaritĂ© Ă 100 % correspond donc Ă deux fichiers identiques, tandis qu’un index de dissimilaritĂ© de 100 % signifie qu’aucune ligne de l’ancien fichier ne se retrouve dans le nouveau fichier.
La ligne d’index inclut les noms des objets blob avant et après la modification. Le <mode> est inclus si le mode du fichier n’est pas modifié ; sinon, des lignes sĂ©parĂ©es indiquent l’ancien et le nouveau mode.
-
Les noms de chemin avec des caractères « inhabituels » sont cités comme expliqué pour la variable de configuration
core.quotePath
(voir git-config[1]). -
Tous les fichiers
fichier1
de la sortie font référence à des fichiers avant la validation, et tous les fichiersfichier2
font rĂ©fĂ©rence aux fichiers après la validation. Il est incorrect d’appliquer chaque modification Ă chaque fichier sĂ©quentiellement. Par exemple, cette rustine Ă©change a et b :diff --git a/a b/b rename from a rename to b diff --git a/b b/a rename from b rename to a
-
Les en-tĂŞtes de section mentionnent le nom de la fonction Ă laquelle la section s’applique. Voir "DĂ©finition d’un entĂŞte de section personnalisĂ©" dans gitattributes[5] pour des dĂ©tails sur la façon d’adapter cela Ă des langages spĂ©cifiques.
Format de diff combiné
Toute commande gĂ©nĂ©rant un diff accepte l’option -c
ou --cc
pour produire un diff combinĂ© lors de l’affichage d’une fusion. C’est le format par dĂ©faut pour afficher les fusions avec git-diff[1] ou git-show[1]. Notez aussi que vous pouvez ajouter l’option adaptĂ©e --diff-merges
à toutes ces commandes pour forcer la génération des diffs dans un format spécifique.
Un format de diff combiné ressemble à ceci :
diff --combined describe.c index fabadb8,cc95eb0..4866510 --- a/describe.c +++ b/describe.c @@@ -98,20 -98,12 +98,20 @@@ return (a_date > b_date) ? -1 : (a_date == b_date) ? 0 : 1; } - static void describe(char *arg) -static void describe(struct commit *cmit, int last_one) ++static void describe(char *arg, int last_one) { + unsigned char sha1[20]; + struct commit *cmit; struct commit_list *list; static int initialized = 0; struct commit_name *n; + if (get_sha1(arg, sha1) < 0) + usage(describe_usage); + cmit = lookup_commit_reference(sha1); + if (!cmit) + usage(describe_usage); + if (!initialized) { initialized = 1; for_each_ref(get_name);
-
Il est prĂ©cĂ©dĂ© d’un entĂŞte "git diff", qui ressemble Ă ceci (quand l’option
-c
est utilisée) :diff --combined file
ou Ă ceci (lorsque l’option
--cc
est utilisée) :diff --cc file
-
Il est suivi par une ligne d’entĂŞte Ă©tendu ou plus (cet exemple montre une fusion avec deux parents)Â :
index <empreinte>,<empreinte>..<empreinte> mode <mode>,<mode>..<mode> new file mode <mode> deleted file mode <mode>,<mode>
La ligne
mode <mode>,<mode>..<mode>
n’apparaĂ®t que si au moins un des modes est diffĂ©rent du reste. Les entĂŞtes Ă©tendus avec l’information Ă propos des dĂ©placements dĂ©tectĂ©s de contenu (dĂ©tection de renommages et de copies) sont conçus pour fonctionner avec le diff de deux <arbre-esques> et ne sont pas utilisĂ©s dans le format de diff combinĂ©. -
Il est suivi par un entête de deux lignes fichier-source/fichier-cible :
--- a/fichier +++ b/fichier
Similaire Ă l’entĂŞte Ă deux lignes pour le format diff unifiĂ© traditionnel,
/dev/null
est utilisĂ© pour indiquer un fichier crĂ©Ă© ou supprimĂ©.Cependant, si l’option --combined-all-paths est fournie, au lieu des deux lignes de fichier-source/fichier-cible, vous obtenez un en-tĂŞte de N+1 lignes de fichier-source/fichier-cible, oĂą N est le nombre de parents dans le commit de fusion :
--- a/fichier --- a/fichier --- a/fichier +++ b/fichier
Ce format étendu peut être utile si la détection de renommage ou de copie est active, pour vous permettre de voir le nom original du fichier dans différents parents.
-
Le format d’entĂŞte de section est modifiĂ© pour empĂŞcher l’utilisation accidentelle avec
patch -p1
. Le format de diff combinĂ© a Ă©tĂ© crĂ©Ă© pour les revues des modifications de commits de fusions, et n’Ă©tait pas destinĂ© Ă ĂŞtre appliquĂ©. La modification est similaire Ă la modification dans l’entĂŞte Ă©tendu d’index :@@@ <intervalle-de-fichier-source> <intervalle-de-fichier-source> <intervalle-de-fichier-cible> @@@
Il y a (nombre de parents + 1) caractères
@
dans l’entĂŞte de section pour le format de diff combinĂ©.
À la différence du format diff unifié traditionnel qui montre deux fichiers A et B avec une seule colonne qui a un préfixe -
(moins — apparaĂ®t dans A mais supprimĂ© dans B), +
(plus — manquant dans A mais ajoutĂ© dans B), ou " "
(espace — non modifiĂ©), ce format compare un fichier ou plus fichier1, fichier2,… avec un fichier X, et affiche comment X diffère de chaque fichierN. Une colonne pour chaque fichierN est insĂ©rĂ©e dans la sortie pour montrer comment la ligne de X est diffĂ©rente de la ligne correspondante de celui-ci.
Un caractère -
dans la colonne N signifie que la ligne apparaît dans fichierN mais pas dans le résultat. Un caractère +
dans la colonne N signifie que la ligne apparaĂ®t dans le rĂ©sultat, et fichierN ne l’a pas (en d’autres termes, la ligne a Ă©tĂ© ajoutĂ©e du point de vue de ce parent).
Dans l’exemple de sortie ci-dessus, la signature de la fonction a Ă©tĂ© changĂ©e depuis les deux fichiers (d’oĂą les deux suppressions -
depuis fichier1 et fichier2, plus ++
pour signifier qu’une ligne qui a Ă©tĂ© ajoutĂ©e n’apparaĂ®t ni dans fichier1 ni dans fichier2). De plus, huit autres lignes sont identiques depuis fichier1 mais n’apparaissent pas dans fichier2 (et sont donc prĂ©fixĂ©es par +
).
Quand affiché par git diff-tree -c
, les parents du commit de fusion sont comparés avec le résultat de fusion (c-à -d fichier1..fichierN sont les parents) ; Quand affiché par git diff-files -c
, les deux parents de fusion non rĂ©solue sont comparĂ©s avec le fichier dans l’arbre de travail (c-Ă -d fichier1 est stage 2, « notre version », fichier2 est stage 3, « leur version »).
autres formats de diff
L’option --summary
dĂ©crit les fichiers nouvellement additionnĂ©s, supprimĂ©s, renommĂ©s et copiĂ©s. L’option --stat
ajoute un graphe diffstat(1) Ă la sortie. Ces options peuvent ĂŞtre combinĂ©es avec d’autres options, telles que -p
et sont destinées à une consommation humaine.
Lors de l’affichage d’une modification qui comprend un renommage ou une copie, la sortie de --stat
formate de manière compacte les noms de chemins en combinant les préfixes et suffixes communs des noms de chemins. Par exemple, une modification qui déplace arch/i386/Makefile
vers arch/x86/Makefile
en modifiant 4 lignes seront affichées comme ceci :
arch/{i386 => x86}/Makefile | 4 +--
L’option --numstat
donne l’information diffstat(1) mais est organisĂ©e pour un meilleur traitement automatique. Une entrĂ©e dans --numstat
ressemble à ceci :
1 2 README 3 1 arch/{i386 => x86}/Makefile
Soit, de gauche à droite :
-
le nombre de lignes ajoutées ;
-
une tabulation ;
-
le nombre de lignes supprimées ;
-
une tabulation ;
-
nom de chemin (avec potentiellement une information de renommage/copie)Â ;
-
une retour Ă la ligne.
Quand l’option de sortie -z
est active, la sortie est formatée comme ceci :
1 2 README NUL 3 1 NUL arch/i386/Makefile NUL arch/x86/Makefile NUL
Soit :
-
le nombre de lignes ajoutées ;
-
une tabulation ;
-
le nombre de lignes supprimées ;
-
une tabulation ;
-
un caractère NUL (n’existe que si renommĂ©/copiĂ©) ;
-
le nom de chemin dans preimage ;
-
un caractère NUL (n’existe que si renommĂ©/copiĂ©) ;
-
le nom de chemin dans postimage (n’existe que si renommĂ©/copiĂ©) ;
-
un caractère NUL.
Le caractère NUL
supplĂ©mentaire avant le chemin de prĂ©image dans le cas de renommage permet aux scripts qui lisent la sortie de dĂ©tecter si l’enregistrement actuellement lu est un enregistrement de chemin unique ou un enregistrement de renommage/copie sans avoir besoin de lire plus loin. Après lecture des lignes ajoutĂ©es et supprimĂ©es, une lecture jusqu’au caractère NUL
fournit le nom de chemin, mais si c’est NUL
, l’enregistrement fournit deux chemins.
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 .