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.51.0
2025-08-18
- 2.49.1 â 2.50.1 no changes
- 2.49.0 no changes
- 2.48.1 â 2.48.2 no changes
-
2.48.0
2025-01-10
- 2.47.1 â 2.47.3 no changes
-
2.47.0
2024-10-06
- 2.46.1 â 2.46.4 no changes
-
2.46.0
2024-07-29
- 2.45.4 no changes
-
2.45.3
2024-11-26
- 2.45.1 â 2.45.2 no changes
-
2.45.0
2024-04-29
- 2.44.1 â 2.44.4 no changes
-
2.44.0
2024-02-23
- 2.43.2 â 2.43.7 no changes
-
2.43.1
2024-02-09
-
2.43.0
2023-11-20
- 2.42.2 â 2.42.4 no changes
-
2.42.1
2023-11-02
-
2.42.0
2023-08-21
- 2.41.1 â 2.41.3 no changes
-
2.41.0
2023-06-01
- 2.40.1 â 2.40.4 no changes
-
2.40.0
2023-03-12
- 2.39.1 â 2.39.5 no changes
-
2.39.0
2022-12-12
- 2.38.1 â 2.38.5 no changes
-
2.38.0
2022-10-02
- 2.37.3 â 2.37.7 no changes
-
2.37.2
2022-08-11
- 2.36.1 â 2.37.1 no changes
-
2.36.0
2022-04-18
- 2.34.1 â 2.35.8 no changes
-
2.34.0
2021-11-15
- 2.33.1 â 2.33.8 no changes
-
2.33.0
2021-08-16
- 2.32.1 â 2.32.7 no changes
-
2.32.0
2021-06-06
- 2.31.1 â 2.31.8 no changes
-
2.31.0
2021-03-15
- 2.30.1 â 2.30.9 no changes
-
2.30.0
2020-12-27
- 2.29.1 â 2.29.3 no changes
-
2.29.0
2020-10-19
- 2.28.1 no changes
-
2.28.0
2020-07-27
- 2.25.2 â 2.27.1 no changes
-
2.25.1
2020-02-17
-
2.25.0
2020-01-13
- 2.24.1 â 2.24.4 no changes
-
2.24.0
2019-11-04
- 2.22.1 â 2.23.4 no changes
-
2.22.0
2019-06-07
- 2.21.1 â 2.21.4 no changes
-
2.21.0
2019-02-24
- 2.20.1 â 2.20.5 no changes
-
2.20.0
2018-12-09
- 2.19.3 â 2.19.6 no changes
-
2.19.2
2018-11-21
- 2.19.1 no changes
-
2.19.0
2018-09-10
- 2.18.1 â 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.17.1 â 2.17.6 no changes
-
2.17.0
2018-04-02
-
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.11.4
2017-09-22
- 2.10.5 no changes
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
- 2.7.6 no changes
-
2.6.7
2017-05-05
-
2.5.6
2017-05-05
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
- 2.1.4 â 2.2.3 no changes
-
2.0.5
2014-12-17
SYNOPSIS
git
diff
[<options>] [<commit>] [--
] [<chemin>âŠâ]git
diff
[<options>]--cached
[--merge-base
] [<commit>] [--
] [<chemin>âŠâ]git
diff
[<options>] [--merge-base
] <commit> <commit>_âŠâ"><commit> [--
] [<chemin>âŠâ]git
diff
[<options>] <commit>...<commit> [--
] [<chemin>âŠâ]git
diff
[<options>] <blob> <blob>git
diff
[<options>]--no-index
[--
] <chemin> <chemin>
DESCRIPTION
Affiche les modifications entre lâarbre de travail et lâindex ou un arbre, les modifications entre lâindex et un arbre, les modifications entre deux arbres, les modifications rĂ©sultant dâune fusion, les modifications entre deux objets blobs ou les modifications entre deux fichiers sur disque.
-
git
diff
[<options>] [--
] [<chemin>...] -
Cette forme sert Ă visualiser les modifications que vous avez faites par rapport Ă lâindex (la zone de prĂ©paration du prochain commit). En dâautres termes, les diffĂ©rences sont ce que vous pourriez indiquer Ă Git dâajouter Ă lâindex mais que vous nâavez pas encore ajoutĂ©es. Vous pouvez indexer ces modifications en utilisant git-add[1].
-
git
diff
[<options>]--no-index
[--
] <chemin> <chemin> -
Cette forme sert Ă comparer les deux chemins indiquĂ©s sur le systĂšme de fichiers. Vous pouvez omettre lâoption
--no-index
si la commande est lancĂ©e dans un arbre de travail contrĂŽlĂ© par Git et quâau moins un des chemins pointe hors de lâarbre de travail ou si la commande est lancĂ©e hors dâun arbre de travail contrĂŽlĂ© par Git. Cette forme implique--exit-code
. -
git
diff
[<options>]--cached
[--merge-base
] [<commit>] [--
] [<chemin>...] -
Cette forme sert à visualiser les modifications que vous avez indexées pour la prochaine validation vis-à -vis du <commit> nommé. Typiquement, vous voudriez comparer avec le <commit> (
HEAD
) le plus récent, ce qui est fait automatiquement si vous ne spécifiez pas <commit>. SiHEAD
nâexiste pas (par exemple, des branches Ă naĂźtre) et si <commit> nâest pas fourni, les modifications indexĂ©es sont affichĂ©es.--staged
est synonyme de--cached
.Si
--merge-base
est donnĂ©, au lieu dâutiliser <commit>, utiliser la base de fusion de <commit> etHEAD
.git
diff
--cached
--merge-base
A
est Ă©quivalent Ăgit
diff
--cached
$
(git
merge-base
A
HEAD
). -
git
diff
[<options>] [--merge-base
] <commit> [--
] [<chemin>...] -
Cette forme sert Ă visualiser les modifications prĂ©sentes dans lâarbre de travail par rapport au <commit> indiquĂ©. Vous pouvez utiliser
HEAD
pour le comparer au commit le plus rĂ©cent ou un nom de branche pour le comparer avec le sommet dâune branche diffĂ©rente.Si
--merge-base
est donnĂ©, au lieu dâutiliser <commit>, utiliser la base de fusion de <commit> etHEAD
.git
diff
--merge-base
A
est Ă©quivalent Ăgit
diff
$
(git
merge-base
A
HEAD
). -
git
diff
[<options>] [--merge-base
] <commit> <commit> [--
] [<chemin>...] -
Ceci sert Ă visualiser les modifications entre deux <commit> arbitraires.
Si
--merge-base
est donné, utiliser la base de fusion des deux commits pour le cÎté "before".git
diff
--merge-base
A
B
est Ă©quivalent Ăgit
diff
$
(git
merge-base
A
B
)B
. -
git
diff
[<options>] <commit> <commit>...
<commit> [--
] [<chemin>...] -
Cette forme permet de visualiser les rĂ©sultats dâun commit de fusion. Le premier <commit> indiquĂ© doit ĂȘtre la fusion elle-mĂȘmeâŻ; les deux autres commits ou plus doivent ĂȘtre ses parents. Des façons pratiques de produire lâensemble des rĂ©visions souhaitĂ©es sont dâutiliser les suffixes
@
et^!
Si
A
est un commit de fusion, alorsgit
diff
A
A^@
,git
diff
A^!
etgit
show
A
donnent tous la mĂȘme diffĂ©rence combinĂ©e. -
git
diff
[<options>] <commit>..
<commit> [--
] [<chemin>...] -
Cette forme est synonyme de la forme précédente (sans le
..
) pour visualiser les modification entre deux <commit>s arbirtraires. Si <commit> est omis dâun cĂŽtĂ©, cela aura le mĂȘme effet que de spĂ©cifierHEAD
Ă la place. -
git
diff
[<options>] <commit>...
<commit> [--
] [<chemin>...] -
Cette forme sert Ă visualiser les modifications sur la branche contenant et jusquâau second <commit>, en dĂ©butant Ă lâancĂȘtre commun au deux <commit>.
git
diff
A...B
est Ă©quivalent Ăgit
diff
$
(git
merge-base
A
B
)B
. Vous pouvez omettre lâun ou lâautre <commit>, ce qui a le mĂȘme effet que de spĂ©cifierHEAD
Ă la place.
Juste au cas oĂč vous feriez quelque chose dâexotique, il convient de noter que la totalitĂ© des <commits> de la description ci-dessus, sauf dans le cas --merge-base
et dans les deux derniĂšres formes qui utilisent les notations ..
, peut ĂȘtre nâimporte quel <arbre>. Un arbre intĂ©ressant est celui pointĂ© par la rĂ©f nommĂ©e AUTO_MERGE', qui est Ă©crit par la stratĂ©gie de fusion `ort lors de conflits de fusions (voir git-merge[1]). La comparaison de lâarbre de travail avec AUTO_MERGE
montre les modifications que vous avez apportĂ©es jusquâĂ prĂ©sent pour rĂ©soudre les conflits textuels (voir les exemples ci-dessous).
Pour une liste plus complĂšte des moyens de spĂ©cifier <commit>, voir la section « SPĂCIFIER LES RĂVISIONS » dans gitrevisions[7]. Cependant, diff
concerne la comparaison de deux point finaux, et non dâintervalles, et les notations dâintervalle (<commit>..
<commit> et <commit>...
<commit>) ne rĂ©fĂšrent pas un intervalle tel que dĂ©fini dans la section « SPĂCIFIER LES RĂVISIONS » de gitrevisions[7].
OPTIONS
-
-p
-
-u
-
--patch
-
GĂ©nĂ©rer la rustine (voir GĂ©nĂ©ration du texte de rustine avec -p). Câest lâoption par dĂ©faut.
-
-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.
-
--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 commence par <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Ă©glant
diff.statNameWidth=
<largeur>. La largeur de la partie du graphe peut ĂȘtre limitĂ©e en utilisant--stat-graph-width=
<largeur-de-graphe> ou en réglantdiff.statGraphWidth=
<largeur-de-graphe>. 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
[<param>,...
] -
--dirstat
[=
<param>,...
] -
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
[=
<param>,...
] -
Synonyme de
--dirstat=files,
<param>,...
. -
--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 formatshort
(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 formatlog
(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 formatshort
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
. Ceci peut ĂȘtre changĂ© par les rĂ©glages de configurationcolor.ui
etcolor.diff
. -
--no-color
-
DĂ©sactiver les diff colorĂ©s. Ceci peut ĂȘtre utilisĂ© pour outrepasser les rĂ©glages de configuration. Câest identique Ă
--color=never
. -
--color-moved
[=
<mode>] -
Les lignes de code dĂ©placĂ©es sont colorĂ©es diffĂ©remment. Ceci peut ĂȘtre modifiĂ© par le rĂ©glage de configuration
diff.colorMoved
. Le <mode> vaut par défautno
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
. Similairementcolor.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 etcolor.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 couleurcolor.diff.
(old
|new
)Moved
oucolor.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=
<mode>,...
-
Ceci configure comment les espaces sont ignorés lors de la détection de déplacement par
--color-moved
. Le réglage de configurationdiff.colorMovedWS
permet de le modifier. 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>] -
Par dĂ©faut, les mots sont dĂ©limitĂ©s par des espacesâŻ; voir
--word-diff-regex
ci-dessous. Le <mode> vaut par défautplain
, 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
. Si <n> 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 drapeauFNM_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
[=
(none
|untracked
|dirty
|all
)] -
Ignorer les modifications dans des sous-modules lors de la génération du diff.
all
(tout) est la valeur par dĂ©faut. Lâutilisation denone
va considérer les sous-modules comme modifiés quand ils contiennent soit des fichiers non-suivis ou modifiés, ou si leurHEAD
diffĂšre du commit enregistrĂ© dans le super-projet, et peut ĂȘtre utilisĂ© pour passer outre tout rĂ©glage de lâoptionignore
dans git-config[1] ou gitmodules[5]. Quanduntracked
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 dedirty
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âĂ v1.7.0). La valeurall
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/
etb/
). Cela surcharge les variables de configuration telles que configuration telle quediff.noprefix
,diff.srcPrefix
,diff.dstPrefix
, etdiff.mnemonicPrefix
(voir git-config[1]). -
--line-prefix=
<préfixe> -
Ajouter le <préfixe> additionnel à 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 dansgit
diff
et un nouveau fichier dansgit
diff
--cached
. Cette option fait apparaĂźtre lâentrĂ©e comme un fichier nouveau dansgit
diff
et non existant dansgit
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].
-
-1
-
--base
-
-2
-
--ours
-
-3
-
--theirs
-
Comparer lâarbre de travail Ă
-
la version "base" (étape #1) en utilisant
-1
ou--base
, -
"notre branche" (étape #2) en utilisant
-2
ou--ours
, ou -
"leur branche" (étape #3) en utilisant
-3
ou--theirs
.
Lâindex contient ces Ă©tapes seulement pour les entrĂ©es non-fusionnĂ©es, câest-Ă -dire lors de la rĂ©solution de conflits. Voir la section « Fusion Ă 3 points » de git-read-tree[1] pour de plus amples informations.
-
-
-0
-
Omettre la sortie de diff pour les entrĂ©es non-fusionnĂ©es et affiche juste « Non fusionnĂ© ». Ne peut ĂȘtre utilisĂ© que lors de comparaison de lâarbre de travail avec lâindex.
- <chemin>...
-
Les paramĂštres <chemin>, quand spĂ©cifiĂ©s, sont utilisĂ©s pour limiter la diffĂ©rence aux chemins indiquĂ©s (vous pouvez indiquer des noms de rĂ©pertoire et visualiser les diffĂ©rences pour tous les fichiers quâils contiennent).
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]).
Ce que lâoption -p
produit est 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 <mode> 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.
EXEMPLES
- Différents moyens de vérifier votre arbre de travail
-
$ git diff (1) $ git diff --cached (2) $ git diff HEAD (3) $ git diff AUTO_MERGE (4)
-
Modifications dans lâarbre de travail pas encore indexĂ©es pour la prochaine validation.
-
Modifications entre lâindex et votre dernier commitâŻ; ce que vous valideriez si vous lanciez
git
commit
sans lâoption-a
. -
Modifications dans lâarbre de travail depuis votre dernier commit ; ce que vous valideriez si vous lanciez
git
commit
-a
-
Changements dans lâarbre de travail que vous avez fait pour rĂ©soudre les conflits textuels jusquâĂ prĂ©sent.
-
- Comparaison de deux commits arbitraires
-
$ git diff test (1) $ git diff HEAD -- ./test (2) $ git diff HEAD^ HEAD (3)
-
Au lieu dâutiliser le sommet de la branche actuelle, compare avec le sommet de la branche « test ».
-
Au lieu de comparer avec le sommet de la branche « test », compare avec le sommet de la branche actuelle, mais limite la comparaison au fichier « test ».
-
Compare la version précédant le dernier commit et le dernier commit.
-
- Comparaison de branches
-
$ git diff sujet master (1) $ git diff sujet..master (2) $ git diff sujet...master (3)
-
Modifications entre les sommets des branches sujet et master.
-
Identique Ă ci-dessus.
-
Modifications présentes sur la branche master depuis que la branche sujet en a divergé.
-
- Limitation de la sortie du diff
-
$ git diff --diff-filter=MRC (1) $ git diff --name-status (2) $ git diff arch/i386 include/asm-i386 (3)
-
Ne montre que les modifications, les renommages et les copies, mais pas les additions ou les suppressions.
-
Ne montre que les noms et la nature de la modification, mais pas la sortie de diff.
-
Limite la sortie de diff aux sous-arbres indiqués.
-
- Bricoler la sortie diff
-
$ git diff --find-copies-harder -B -C (1) $ git diff -R (2)
-
Dépense des cycles supplémentaires de CPU pour trouver les renommages, les copies ou les réécritures complÚtes (trÚs cher).
-
Affiche les diff inversés.
-
CONFIGURATION
Tout ce qui se trouve en dessous de cette ligne dans cette section est inclus de maniĂšre sĂ©lective Ă partir de la documentation git-config[1]. Le contenu est le mĂȘme que celui qui sây trouve :
Warning
|
Missing See original version for this content. |
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 .