Comparaison de différences de texte (Diff)
Comparez deux blocs de texte ligne par ligne et affichez les lignes ajoutées et supprimées mises en couleur. Utile pour vérifier les modifications d'un fichier de configuration, relire un document ou faire une revue de code sans Git. Tout le calcul s'effectue dans le navigateur ; le contenu saisi n'est jamais envoyé à un serveur.
Comparer deux textes ligne à ligne
Voici l'outil auquel recourir lorsqu'on veut établir ce qui a changé dans un fichier de configuration, ou en quel endroit un écrit a été retouché. Il confronte deux textes ligne à ligne et marque de couleurs distinctes les lignes ajoutées et les lignes supprimées. Tout se calcule dans le navigateur, si bien que rien de ce que vous collez ne quitte votre appareil.
**Il est bon de savoir, en lisant le résultat, qu'un algorithme de comparaison cherche la plus courte suite de modifications.** Aussi **ce qu'une personne voit comme « ce paragraphe est descendu », la machine l'exprime-t-elle comme une suppression assortie d'un ajout.** Il n'existe aucune notation pour le déplacement en tant que tel. L'autre point est que la comparaison procède par lignes : **une ligne qui diffère d'un seul caractère est signalée comme modifiée tout entière.** Le cas le plus déroutant est ici une différence de fins de ligne ou d'espaces terminaux, qui peut marquer chaque ligne comme modifiée alors que rien ne paraît autre. Quand une comparaison ressort invraisemblablement vaste, c'est ce qu'il faut soupçonner en premier.
Comment s'en servir
- Collez l'original dans A Entrez le contenu tel qu'il était avant la modification.
- Collez la version révisée dans B Entrez le contenu tel qu'il se présente après la modification.
- Lisez les écarts colorés **Les lignes ajoutées et les lignes supprimées paraissent en couleurs distinctes.**
- Soupçonnez les fins de ligne si l'écart est immense **Une différence portant sur les seules fins de ligne ou espaces terminaux marque chaque ligne comme modifiée.**
Astuces pour en tirer le meilleur parti
- Collez la version avant et après d'un fichier de configuration (.env, YAML, JSON, etc.) pour voir instantanément quelles lignes ont été ajoutées ou supprimées.
- Même sans Git installé, un simple copier-coller de deux versions permet de faire une revue de code sommaire ou de relire un document.
- Une ligne qui a simplement changé de position est détectée comme une suppression plus un ajout, et non comme un "déplacement" — gardez cela en tête en lisant le résultat.
- Les espaces, les sauts de ligne et la casse sont comparés de façon stricte, si bien qu'une ligne dont seule l'indentation a changé apparaîtra aussi comme modifiée.
- Pour comparer un texte long, mettre un paragraphe par ligne avant de le coller permet de repérer les différences paragraphe par paragraphe d'un coup d'œil.
Dans quels cas s'en servir
Pour vérifier une modification de fichier de configuration
Avant sa mise en production, vous voyez que seul ce que vous vouliez changer a changé.
Pour collationner le résultat d'une relecture
**Mettre un brouillon en regard de sa réécriture laisse suivre d'un coup d'œil où la main est passée.**
Pour relire sans Git
Des fichiers jamais placés sous gestion de versions se comparent tout de même, par simple collage.
Pour confirmer qu'une sortie est reproductible
Comparez les résultats de deux exécutions du même traitement et confirmez que rien ne diverge.
Vocabulaire de la comparaison
- Ligne ajoutée
- Une ligne présente uniquement dans B.
- Ligne supprimée
- Une ligne présente uniquement dans A. **Une ligne qui s'est seulement déplacée ressort elle aussi comme une suppression assortie d'un ajout.**
- Comparaison par lignes
- Une comparaison traitant chaque ligne comme un tout. **Une différence d'un caractère marque la ligne entière comme modifiée.**
- Fin de ligne
- Le caractère marquant le terme d'une ligne : CRLF sous Windows, LF sur les systèmes de type Unix. **Une différence ici peut se manifester comme si toutes les lignes différaient.**
- Bloc
- Un morceau unique au sein d'une comparaison, où les modifications se rassemblent.
- Contexte
- Les lignes inchangées présentées au-dessus et au-dessous d'une ligne modifiée, jointes pour mieux situer l'endroit.
Questions fréquentes
Anecdote — comment le LCS (plus longue sous-séquence commune) calcule les différences de texte
L'algorithme le plus connu pour détecter les différences entre deux textes est l'"algorithme de diff de Myers", publié dans les années 1970 par l'informaticien Eugene Myers, chez IBM. La commande `diff` des principaux systèmes de gestion de versions, comme Git et SVN, repose sur cette famille d'algorithmes et détecte efficacement les lignes ajoutées et supprimées. Cet outil suit la même logique en calculant la plus longue sous-séquence commune (LCS) pour réduire le résultat à un ensemble minimal de changements.
La plus longue sous-séquence commune (LCS) est la plus longue séquence qui apparaît, dans le même ordre, dans les deux séquences comparées — ici, la séquence des lignes. La différence entre deux textes s'obtient en considérant chaque ligne absente de cette LCS comme "supprimée" ou "ajoutée" ; plus la LCS est longue, moins de changements s'affichent à l'écran. Une technique appelée programmation dynamique (PD) rend ce calcul praticable même pour des textes comportant de nombreuses lignes.
Les algorithmes de diff ont une faiblesse connue : lorsqu'une ligne se déplace simplement à une autre position, la plupart des implémentations ne le détectent pas comme un "déplacement" mais l'affichent comme une suppression associée à un ajout. C'est pourquoi comparer des textes dont l'ordre des lignes a été fortement remanié peut faire paraître la différence plus importante que le changement réel. Connaître cette particularité aide à interpréter les résultats sans se tromper.