Comment comparer des textes et trouver les différences
Trouver ce qui a changé entre deux versions d'un document, fichier de configuration ou morceau de code est une tâche courante. Lire les deux versions et repérer les différences manuellement est lent et peu fiable, surtout avec de longs textes. Un vérificateur de différences le fait instantanément et met en évidence chaque changement. Le même algorithme qui alimente l'historique de commit de Git, l'interface de révision de pull-request de GitHub et la commande Unix diff sous-tend tout outil de différence visuelle que vous avez jamais utilisé.
Comment comparer du texte
- Collez les deux versions : entrez le texte original à gauche et le texte modifié à droite.
- Examinez les surlignages : les lignes ajoutées sont affichées en vert, les lignes supprimées en rouge. Les lignes modifiées montrent à la fois les anciennes et nouvelles versions.
- Exportez ou copiez : copiez les résultats de différence ou téléchargez un rapport.
La comparaison se produit dès que les deux volets ont du texte. Il n'y a pas de bouton Comparer à cliquer ; les modifications de chaque côté relancent la différence en temps réel, ce qui est utile lorsque vous itérez sur une correction et voulez voir l'effet immédiatement.
Lire une différence
La sortie de différence utilise un système de couleurs simple :
- Vert (ajouté) : lignes qui existent dans la nouvelle version mais pas dans l'ancienne
- Rouge (supprimé) : lignes qui existaient dans l'ancienne version mais ont disparu de la nouvelle
- Inchangé : lignes identiques dans les deux versions
C'est la même convention utilisée par Git, GitHub, GitLab, Bitbucket et chaque système de contrôle de version majeur. Les couleurs ne sont pas arbitraires : le vert pour les ajouts et le rouge pour les suppressions sont la norme depuis les années 1970 lorsque les premiers outils de différence visuelle (comme la commande sdiff) ont été livrés sur Unix. Les outils modernes ajoutent parfois du jaune ou de l'orange pour "changé" (une ligne qui existe dans les deux mais est différente), mais le rouge et le vert restent les ajouts/suppressions universels.
Une brève histoire de diff
L'algorithme diff a été publié pour la première fois par Douglas McIlroy aux Bell Labs en 1976, s'appuyant sur le raffinement ultérieur d'Eugene Myers (l'algorithme O(ND), 1986) qui a rendu diff suffisamment rapide pour une utilisation interactive. L'algorithme original de McIlroy a été publié avec la version Unix V7 en 1979 et fait partie de tout système d'exploitation similaire à Unix depuis. L'algorithme de Myers est ce qui alimente les implémentations diff modernes : le diff de Git, l'interface web de GitHub, chaque GUI de diff de Beyond Compare à VS Code.
Le format de diff côte à côte visuel précède l'algorithme : il remonte aux conventions de relecture manuelle dans l'édition (montrant deux colonnes de texte avec les changements marqués dans la marge). Le logiciel des années 1970 a juste automatisé ce que les éditeurs faisaient sur papier depuis des siècles. Le format "diff unifié" (celui avec les en-tetes --- et +++ que vous voyez dans les fichiers patch) a été introduit en 1990 par GNU diff et est maintenant la norme de facto pour partager les changements par texte.
Quand la vérification de différence est utile
- Revue de code : comparez vos modifications par rapport à l'original avant de valider pour voir exactement ce que vous avez modifié
- Révisions de documents : trouvez ce qui a changé entre deux versions d'un contrat, article ou politique
- Débogage de configuration : comparez un fichier de configuration fonctionnel à un fichier cassé pour repérer la différence
- Validation de données : vérifiez si deux exports de données sont identiques ou trouvez où ils divergent
- Conflits de fusion : comprenez les deux côtés d'un conflit avant de le résoudre
- Révision de traduction : comparez un document original à une traduction pour vous assurer qu'aucune section n'a été ignorée
- Comparaison d'email ou de message : quand quelqu'un dit "je vous ai envoyé la version corrigée," diff les deux messages pour voir ce qui a réellement changé
- Validation d'export de base de données : comparez deux exports CSV d'une base de données pour confirmer qu'une exécution ETL a produit une sortie identique
Diff basé sur les lignes vs basé sur les caractères
Le vérificateur de différences utilise la comparaison basée sur les lignes, ce qui signifie qu'il traite chaque ligne comme la plus petite unité de différence. Si vous changez un seul mot sur une ligne, toute la ligne est affichée comme changée (l'ancienne ligne en rouge, la nouvelle ligne en vert) et vous devez repérer la différence au niveau du mot vous-meme.
Le diff basé sur les lignes est la norme pour les fichiers de code et de configuration car ceux-ci sont généralement orientés ligne (une instruction par ligne, une option de configuration par ligne). C'est rapide, prévisible et correspond à la façon dont Git et chaque outil de revue de code fonctionnent.
Pour la comparaison de prose où les changements au niveau de la ligne sont trop grossiers, certains outils offrent un diff au niveau du mot ou du caractère qui met en évidence uniquement les mots changés dans une ligne. C'est plus précis mais plus difficile à lire pour le code. Si vous avez besoin d'un diff au niveau du mot, recherchez un outil spécifiquement étiqueté "word diff" ou "intra-line diff."
Confidentialité et contenu confidentiel
Le vérificateur de différences s'exécute entièrement dans votre navigateur. Les deux morceaux de texte restent sur votre appareil ; rien n'est téléversé. Cela importe car le texte que vous voulez le plus comparer est souvent confidentiel : contrats en cours de négociation, communiqués de presse en brouillon, documents de politique interne, code source sous NDA. Les outils de différence cloud (DiffChecker.com, JsonDiff.com, outils de fusion en ligne) nécessitent de téléverser les deux textes vers un serveur tiers, ce qui est précisément ce que vous voulez éviter pour le contenu sensible. La différence basée sur navigateur n'a aucune de ces expositions.
La session est également sans état : rien ne persiste après la fermeture de l'onglet. Si vous devez conserver une trace de la différence, copiez la sortie ou prenez une capture d'écran avant de naviguer ailleurs.
Pièges courants
- Bruit d'espaces blancs : les espaces de fin, les mélanges de tabulations et d'espaces, et les différentes fins de ligne (LF sur Unix vs CRLF sur Windows) apparaissent souvent comme des "changements" même lorsque le texte visible est identique. La plupart des outils de différence ont une bascule "ignorer les espaces blancs" pour ce cas.
- Inadéquations de fin de ligne : les fins de ligne Windows (CRLF) vs les fins de ligne Unix (LF) font apparaître chaque ligne comme changée. Si vous différenciez des fichiers de différents systèmes d'exploitation, normalisez d'abord les fins de ligne.
- Différences d'encodage : le texte en UTF-8 vs UTF-16 vs Windows-1252 peut sembler identique mais se comparer comme complètement différent. Normalisez l'encodage en UTF-8 avant la différence.
- Contenu identique réorganisé : si vous coupez un paragraphe de la page 3 et le collez à la page 1, la différence montre le paragraphe comme supprimé-de-la-page-3 et ajouté-à-la-page-1 même si le contenu est inchangé. Certains outils offrent la "détection de blocs déplacés" pour gérer cela ; le diff de base ne le fait pas.
- Performance des gros fichiers : comparer des fichiers de plus de 10 000 lignes peut ralentir le navigateur. Pour les très grandes différences, utilisez la commande
diffen ligne de commande ou un outil de bureau comme Beyond Compare.
Conseils
- Collez du texte propre : retirez les en-tetes, pieds de page ou métadonnées que vous ne voulez pas comparer. Le bruit supplémentaire rend les vraies différences plus difficiles à repérer.
- Utilisez la vue côte à côte : voir les deux versions l'une à côté de l'autre avec des numéros de ligne alignés rend les différences plus faciles à tracer qu'une vue en ligne.
- Vérifiez les espaces blancs : parfois, le texte "identique" a des différences invisibles comme des espaces de fin, différentes fins de ligne (LF vs CRLF) ou des tabulations vs espaces. Le vérificateur de différences les attrape.
- Normalisez d'abord pour la prose : pour la comparaison de langage naturel, exécutez les deux textes à travers un normalisateur d'espaces blancs ou collez dans un éditeur simple avant de différencier. Cela évite les différences parasites du formatage repris de Word ou PDF.
- Sauvegardez la différence si vous avez besoin d'un enregistrement : copiez la sortie surlignée ou prenez une capture d'écran. La différence n'est pas persistante automatiquement.
- Fonctionne hors ligne : une fois la page chargée, les comparaisons s'exécutent localement dans votre navigateur sans besoin d'internet.
Questions fréquentes
Le diff compare-t-il caractère par caractère ?
Il compare ligne par ligne, la même approche que Git et la plupart des outils pro de diff. Si un seul caractère change sur une ligne, la ligne entière est surlignée comme changée.
Y a-t-il une limite de taille ?
Pas de limite dure, mais de très gros textes (plus de 10 000 lignes) peuvent prendre un instant à traiter puisque la comparaison tourne entièrement dans votre navigateur.
Puis-je comparer des fichiers de code ?
Oui. Le diff fonctionne avec n'importe quel texte, y compris du code source. La coloration syntaxique aide à lire plus facilement les diffs de code.
Mon texte est-il envoyé sur un serveur ?
Non. La comparaison se fait dans votre navigateur. Votre texte ne quitte jamais votre appareil.