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.52.0
2025-11-17
- 2.48.1 â 2.51.2 no changes
-
2.48.0
2025-01-10
- 2.43.1 â 2.47.3 no changes
-
2.43.0
2023-11-20
- 2.38.1 â 2.42.4 no changes
-
2.38.0
2022-10-02
- 2.31.1 â 2.37.7 no changes
-
2.31.0
2021-03-15
- 2.25.1 â 2.30.9 no changes
-
2.25.0
2020-01-13
- 2.20.1 â 2.24.4 no changes
-
2.20.0
2018-12-09
- 2.19.1 â 2.19.6 no changes
-
2.19.0
2018-09-10
SYNOPSIS
git range-diff [--color=[<quand>]] [--no-color] [<options-de-diff>] [--no-dual-color] [--creation-factor=<facteur>] [--left-only | --right-only] [--diff-merges=<format>] [--remerge-diff] ( <plage1> <plage2> | <rev1>âŠâ<rev2> | <base> <rev1> <rev2> ) [[--] <chemin>âŠâ]
DESCRIPTION
Cette commande affiche les diffĂ©rences entre deux versions dâune sĂ©rie de rustines, ou plus gĂ©nĂ©ralement, entre deux plages de commits (en ignorant les commits de fusion).
En prĂ©sence dâarguments <chemin>, ces plages de commits sont restreintes en consĂ©quence.
Ă cette fin, elle recherche les paires de commits depuis les deux plages de commits qui se correspondent. Deux commit sont dits correspondre quand les diffs entres leurs rustines (c-Ă -d. les information dâauteur, les messages de commit et les diffs des commits) sont raisonnablement petites par rapport Ă la taille des rustines. Voir ``Algorithme`` ci-dessous pour plus de dĂ©tails.
Enfin, la liste des commits en correspondance est affichĂ©e dans lâordre de la deuxiĂšme plage de commits, avec les commits sans correspondance insĂ©rĂ©s aprĂšs que tous leurs ancĂȘtres ont Ă©tĂ© affichĂ©s.
Il existe trois moyens de spĂ©cifier les plages de commitâŻ:
-
<plage1><plage2>âŻ: la plage de commits peut ĂȘtre de la forme <base>
..<rev>, <rev>^!-<n>. VoirSPECIFIERLESPLAGESdans gitrevisions[7] pour de plus amples détails. -
<rév1>
...<rĂ©v2>. Câest Ă©quivalent Ă <rĂ©v2>..<rĂ©v1> <rĂ©v1>..<rĂ©v2>. -
<base> <rev1> <rev2>âŻ: Câestquivalent Ă <base>
..<rev1> <base>..<rev2>.
OPTIONS
- --no-dual-color
-
Quand les diffs de commit diffĂšrent,
gitrange-diffrecrĂ©e le coloriage original des diffs et ajoute les marqueurs de diff externes -/+ avec le fond en rouge/vert pour le rendre plus visible, par exemple lorsquâil y a eu une modification et quelles lignes ont Ă©tĂ© ajoutĂ©es.En outre, les lignes diff de commit qui sont seulement prĂ©sentes dans la plage du premier commit sont montrĂ©es "attĂ©nuĂ©es" (ceci peut ĂȘtre surchargĂ© Ă lâaide du rĂ©glage de configuration`color.diff.<crĂ©neau>` oĂč <crĂ©neau> peut ĂȘtre
contextDimmed,oldDimmedou`newDimmed`), et les lignes du diff de commit qui ne sont prĂ©sentes que dans la plage du second commit sont montrĂ©es en gras (ce qui peut ĂȘtre surchargĂ© Ă lâaide du rĂ©glage de configuration`color.diff.<crĂ©neau>` oĂč <crĂ©neau> peut ĂȘtrecontextBold,oldBoldou`newBold`).Ceci est connu par
range-diffsous le nom de « coloration double ». Utilisez--no-dual-colorpour retourner à la coloration de toutes les lignes selon les marqueurs de diff externes (et ignorer complÚtement la colorisation du diff interne). - --creation-factor=<pourcentage>
-
Définir le facteur de coût de création/de suppression à <pourcent>. Par défaut à 60. Essayez une plus grande valeur si
gitrange-diffconsidĂšre erronĂ©ment une réécriture totale comme un grand changement (la suppression dâun commit et lâajout dâun autre), et une plus petite dans le cas inverse. Voir la section ``Algorithme`` ci-dessous pour une explication de pourquoi cela est nĂ©cessaire. - --left-only
-
Supprimer les commits qui manquent dans la premiĂšre plage spĂ©cifiĂ©e (ou dans la « plage de gauche » lors de lâutilisation du format <rĂ©v1>
...<rév2>). - --right-only
-
Supprimer les commits qui manquent dans la deuxiĂšme plage spĂ©cifiĂ©e (ou dans la « plage de droite » lors de lâutilisation du format <rĂ©v1>
...<rév2>). - --diff-merges=<format>
-
Au lieu dâignorer les commits de fusion, gĂ©nĂ©rer des diffs pour eux Ă lâaide de lâoption correspondante
--diff-merges=<format> de git-log[1] et les inclure dans la comparaison.Note : dans le cas habituel, le mode
remergesera le mode le plus naturel Ă utiliser, car il montre seulement la diff sur ce que la machinerie de fusion de Git aurait produit. En dâautres termes, si un commit de fusion est le rĂ©sultat dâune fusion non conflictuelle, le moderemergele reprĂ©sentera avec une diff vide. - --remerge-diff
-
Option de comfort, Ă©quivalente Ă
--diff-merges=remerge. - --notes[=<ref>]
- --no-notes
-
Ce drapeau est passé au programme
gitlog(voir git-log[1]) qui génÚre les rustines. - <plage1> <plage2>
-
Comparer les commits spĂ©cifiĂ©s par les deux plages, oĂč <plage1> est considĂ©rĂ© comme une version ancienne de <plage2> .
- <rĂ©v1>âŠâ<rĂ©v2>
-
Equivalent à passer <rév2>
..<rév1> et <rév1>..<rév2>. - <base> <rév1> <rév2>
-
Ăquivalent Ă passer <base>
..<rĂ©v1> et <base>..<rĂ©v2>. Notez que <base> nâa pas besoin dâĂȘtre le point exact dâembranchement des branches. Par exempleâŻ: aprĂšs avoir rebasĂ© une branchemon-sujet,gitrange-diffmy-topic@{u}mon-sujet@{1}mon-sujetmontrerait les diffĂ©rences introduites par le rebasage.
git range-diff accepte aussi les options normales de diff (voir git-diff[1]), notablement les options --color=[<quand>] et --no-color. Ces options sont utilisĂ©es lors de la gĂ©nĂ©ration du " diff entre rustines", c-Ă -d pour comparer lâauteur, le message de validation et la diff de commits anciens/nouveaux correspondants. Il nây a actuellement aucun moyen de bricoler la plupart des options de diff passĂ©es Ă git log lors de la gĂ©nĂ©ration de ces rustines.
STABILITĂ DE LA SORTIE
La sortie de la commande range-diff est sujette Ă changement. Elle est destinĂ© Ă ĂȘtre la production de porcelaine humainement lisible, pas quelque chose qui peut ĂȘtre utilisĂ© Ă travers les versions de Git pour obtenir un range-diff textuellement stable (par opposition Ă quelque chose comme lâoption --stable de git-patch-id[1]). Il nây a pas dâĂ©quivalent de git-apply[1] pour range-diff, la sortie nâest pas destinĂ©e Ă ĂȘtre consommable par une machine.
Câest particuliĂšrement vrai lors du passage dâoptions Ă diff. Actuellement, certaines options comme --stat peuvent, comme effet Ă©mergent, produire des sorties qui sont assez inutiles dans les contexte de range-diff. Des versions futures de range-diff peuvent apprendre Ă intercepter de telles options dâun maniĂšre spĂ©cifique Ă range-diff (c-Ă -d pour --stat produisant une sortie humaine qui rĂ©sume comment les stats de diff ont changĂ©).
CONFIGURATION
Cette commande utilise les réglages diff.color.* et pager.range-diff (ce dernier activé par défaut). Voir git-config[1].
EXEMPLES
Quand un rebasage nĂ©cessite la rĂ©solution dâun conflit de fusion, comparer les modifications introduites par le rebasage directement aprĂšs, en utilisantâŻ:
$ git range-diff @{u} @{1} @
Une sortie typique de git range-diff ressemblerait Ă ceci âŻ:
-: ------- > 1: 0ddba11 Prepare for the inevitable!
1: c0debee = 2: cab005e Add a helpful message at the start
2: f00dbalâŻ! 3: decafe1 Describe a bug
@@ -1,3 +1,3 @@
Author: A U Thor <author@example.com>
-TODO: Décrire un bogue
+Décrire un bogue
@@ -324,5 +324,6
C'est attendu.
-+Ce qui est inattendu est il va aussi se crasher
++Ătonnamment, il se crash aussi. C'est un bogue et le jury
++délibÚre toujours pour le corriger. Voir ticket #314 pour plus de détails.
Contact
3: bedead < -: ------- Ă-DĂFAIRE
Dans cet exemple, il y a 3 commits anciens et 3 nouveaux, oĂč le dĂ©veloppeur a supprimĂ© le 3Ăšme, en ajoutĂ© un nouveau avant les deux premiers, et a modifiĂ© le message de validation du 2Ăšme commit ainsi que son diff.
Lorsque la sortie va Ă un terminal, elle est codĂ©e en couleur par dĂ©faut, tout comme la sortie git diff normale. En outre, la premiĂšre ligne (ajout dâun commit) est verte, la derniĂšre ligne (suppression dâun commit) est rouge, la deuxiĂšme ligne (avec une correspondance parfaite) est jaune comme lâen-tĂȘte de commit de la sortie de git show, et la troisiĂšme ligne colore lâancien commit en rouge, le nouveau en vert et le reste comme lâen-tĂȘte de commit git show.
Une diff naĂŻve de diffs codĂ©e en couleur est en fait un peu difficile Ă lire, cependant, car elle colorie lâensemble des lignes rouges ou vertes. La ligne qui a ajoutĂ© "Ce qui est inattendu" dans lâancien commit, par exemple, est complĂštement rouge, mĂȘme si lâintention de lâancien commit Ă©tait dâajouter quelque chose.
Pour arranger cela, range utilise le mode --dual-color par dĂ©faut. Dans ce mode, la diff de diffs conservera les couleurs diff originales, et prĂ©fixera les lignes avec des marqueurs -/+ qui ont leur fond en rouge ou vert, pour rendre plus Ă©vident quâils dĂ©crivent comment la diff elle-mĂȘme a changĂ©.
Algorithme
LâidĂ©e gĂ©nĂ©rale est ceciâŻ: nous gĂ©nĂ©rons une matrice de coĂ»ts entre les commits dans les deux plages de commits, puis rĂ©solvons lâaffectation la moins coĂ»teuse.
La matrice de coĂ»ts est peuplĂ©e ainsiâŻ: pour chaque paire de commits, les deux diffs sont gĂ©nĂ©rĂ©s et le « diff des diffs » est gĂ©nĂ©rĂ©, avec 3 lignes de contexte, puis le nombre de lignes dans ce diff est utilisĂ© comme coĂ»t.
Pour Ă©viter les faux positifs (par exemple lorsquâune rustine a Ă©tĂ© enlevĂ©e, et quâune rustine non liĂ©e a Ă©tĂ© ajoutĂ©e entre deux itĂ©rations de la mĂȘme sĂ©rie de rustines), la matrice de coĂ»t est Ă©tendue pour permettre cela, en ajoutant des entrĂ©es Ă coĂ»t fixe pour les grosses suppressions/ajouts.
ExempleâŻ: supposons que les commits 1--2 sont la premiĂšre itĂ©ration dâune sĂ©rie de rustines et que A--C sont ceux de la deuxiĂšme itĂ©ration. Supposons que A est un picorage de 2, et C est un picorage de 1 mais avec une petite modification (disons, une correction de frappe). Visualisons les commits comme un graphique bipartiteâŻ:
1 A
2 B
C
Nous cherchons une « meilleure » explication de la nouvelle sĂ©rie Ă partir de lâancienne. Nous pouvons reprĂ©senter une « explication » comme un lien dans le grapheâŻ:
1 A
/
2 --------' B
C
Cette explication est « gratuite » parce quâil nây avait pas de changement. De mĂȘme C peut ĂȘtre expliquĂ© en utilisant 1, mais cela vient Ă un certain coĂ»t c>0 en raison de la modificationâŻ:
1 ----. A
| /
2 ----+---' B
|
`----- C
c>0
En termes mathĂ©matiques, ce que nous cherchons est une sorte de coĂ»t minimum bipartite correspondantâŻ; 1 est Ă©gal Ă C Ă un certain coĂ»t, etc. Le graphe sous-jacent est en fait un graphe bipartite completâŻ; le coĂ»t que nous associons Ă chaque arĂȘte est la taille de la diff entre les rustines des deux commits. Pour expliquer aussi les nouveaux commits, nous prĂ©sentons des nĆuds vides des deux cĂŽtĂ©sâŻ:
1 ----. A
| /
2 ----+---' B
|
o `----- C
c>0
o o
o o
Le coĂ»t dâune arĂȘte o--C est la taille de la diff c, modifiĂ©e dâun facteur dâadaptation qui devrait ĂȘtre infĂ©rieur Ă 100%. Une arĂȘte o--o est gratuite. Le facteur dâadaptation est nĂ©cessaire parce que mĂȘme si 1 et`C` nâont rien en commun, ils peuvent tout de mĂȘme contenir des lignes vides et autres, rendant probablement lâaffectation 1--C, o--o lĂ©gĂšrement moins chĂšre que 1--o, o--C mĂȘme si 1 et C nâont rien en commun. Avec le facteur dâadaptation, nous exigeons quâune part plus importante soit commune pour considĂ©rer les rustines comme correspondantes.
Le temps total nĂ©cessaire au calcul de cet algorithme est le temps nĂ©cessaire au calcul de n+m diffs de commits, suivi de m*n diffs de rustines, plus le temps nĂ©cessaire au calcul de lâaffectation de moindre coĂ»t entre n et m diffs. Git utilise un implantation de lâalgorithme de Jonker-Volgenant pour rĂ©soudre le problĂšme dâaffectation, qui de complexitĂ© cubique. La correspondance trouvĂ©e dans ce cas ressemble Ă ceciâŻ:
1 ----. A
| /
2 ----+---' B
.--+-----'
o -' `----- C
c>0
o ---------- o
o ---------- o
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 .