alltools.one
Development‱
2025-07-02
‱
7 min
‱
alltools.one Team
DiffText ComparisonGitCode ReviewMerge

Comment comparer des fichiers texte : outils et techniques Diff

Comparer du texte est une tùche quotidienne pour les développeurs. Que ce soit pour examiner des modifications de code, déboguer une dérive de configuration ou fusionner des documents, comprendre la sortie diff est essentiel. Ce guide couvre les algorithmes, outils et techniques pour une comparaison de texte efficace.

Comprendre la sortie Diff

Le format diff unifié classique montre les changements entre deux fichiers :

--- original.txt
+++ modified.txt
@@ -1,5 +1,6 @@
 Line 1: unchanged
-Line 2: removed text
+Line 2: modified text
+Line 2.5: added line
 Line 3: unchanged
 Line 4: unchanged
-Line 5: also removed
  • Les lignes commençant par - ont Ă©tĂ© supprimĂ©es (de l'original)
  • Les lignes commençant par + ont Ă©tĂ© ajoutĂ©es (dans la version modifiĂ©e)
  • Les lignes commençant par (espace) sont du contexte inchangĂ©
  • Les marqueurs @@ indiquent les numĂ©ros de ligne concernĂ©s

Algorithmes Diff

Algorithme de Myers

L'algorithme par dĂ©faut utilisĂ© par Git et la plupart des outils diff. Il trouve le script d'Ă©dition le plus court — le nombre minimum d'insertions et de suppressions pour transformer un fichier en un autre. Il produit des diffs propres et lisibles pour la plupart des contenus.

Patience Diff

Meilleur pour le texte structuré comme le code source. Au lieu de trouver l'édition la plus courte, il fait d'abord correspondre les lignes uniques présentes dans les deux fichiers, puis calcule le diff des sections intermédiaires. Cela produit souvent des diffs plus significatifs qui s'alignent avec les blocs logiques du code.

git diff --patience

Histogram Diff

Une amélioration du patience diff, utilisé comme algorithme par défaut de Git depuis la version 2.x. Il gÚre mieux les lignes répétées et produit une sortie plus propre pour les fichiers avec des changements structurels importants.

Comparer du texte en ligne

Pour des comparaisons rapides sans installer d'outils, notre Comparateur de texte Diff offre des vues cĂŽte Ă  cĂŽte et en ligne directement dans votre navigateur. Collez deux textes et voyez les changements mis en surbrillance instantanĂ©ment — tout le traitement se fait localement.

Outils Diff en ligne de commande

diff (POSIX)

L'outil Unix classique :

# Unified format (most readable)
diff -u file1.txt file2.txt

# Side-by-side
diff -y file1.txt file2.txt

# Ignore whitespace
diff -w file1.txt file2.txt

# Recursive directory comparison
diff -r dir1/ dir2/

git diff

MĂȘme en dehors d'un dĂ©pĂŽt Git, git diff fournit une sortie supĂ©rieure :

# Compare two files
git diff --no-index file1.txt file2.txt

# Word-level diff (highlights changed words, not whole lines)
git diff --word-diff

# Stat summary (files changed, insertions, deletions)
git diff --stat

colordiff / delta

Pour une sortie colorée dans le terminal :

# colordiff: drop-in replacement for diff
colordiff file1.txt file2.txt

# delta: modern diff viewer for Git
git diff | delta

Diff pour la revue de code

Une revue de code efficace dépend de diffs lisibles. Voici des techniques pour améliorer la qualité des diffs :

1. Gardez les commits ciblés

Les diffs volumineux de centaines de lignes sont difficiles Ă  examiner. Chaque commit devrait traiter un seul sujet :

  • SĂ©parez les changements de formatage des changements de logique
  • DĂ©coupez les refactorisations importantes en Ă©tapes incrĂ©mentales
  • DĂ©placez les fichiers dans un commit, modifiez-les dans un autre

2. Utilisez le diff au niveau des mots

Les diffs au niveau des lignes masquent le changement réel quand une ligne a une petite modification enfouie dans une longue chaßne :

# Shows only the changed words, not entire lines
git diff --word-diff

3. Ignorez les espaces dans les revues

Les changements de formatage ajoutent du bruit aux diffs significatifs :

git diff -w        # Ignore all whitespace changes
git diff -b        # Ignore whitespace amount changes

4. Examinez avec du contexte

Plus de lignes de contexte aident Ă  comprendre le code environnant :

git diff -U10      # Show 10 lines of context (default is 3)

Gestion des conflits de fusion

Lorsque Git rencontre des changements conflictuels, il marque le conflit dans le fichier :

<<<<<<< HEAD
const timeout = 5000;
=======
const timeout = 10000;
>>>>>>> feature-branch

Pour résoudre :

  1. Comprendre les deux changements — pourquoi chacun a-t-il Ă©tĂ© fait ?
  2. Décider quelle version garder, ou les combiner
  3. Supprimer les marqueurs de conflit
  4. Tester le résultat

Pour les fusions complexes, utilisez un outil de fusion Ă  trois voies qui affiche l'ancĂȘtre commun aux cĂŽtĂ©s des deux versions.

Comparer du contenu non textuel

Diff JSON

Le diff textuel standard a du mal avec le JSON car les changements d'ordre des clés et de formatage créent du bruit. Le diff sémantique JSON compare la structure de données réelle. Consultez notre outil JSON Diff pour une comparaison structurelle.

Diff CSV

Les données tabulaires nécessitent une comparaison tenant compte des colonnes. Le diff standard traite chaque ligne comme une chaßne, manquant les changements au niveau des cellules.

Fichiers binaires

Le diff ne peut pas comparer de maniÚre significative les fichiers binaires. Pour les images, utilisez des outils de diff visuel. Pour les documents, convertissez d'abord en texte ou utilisez des outils de comparaison spécifiques au format.

Diff dans l'automatisation

Pipelines CI/CD

Utilisez diff pour vérifier la sortie attendue dans les tests :

command_under_test > actual_output.txt
diff expected_output.txt actual_output.txt
# Exit code 0 = identical, 1 = different

Détection de dérive de configuration

Comparez la configuration de production avec l'état attendu :

diff deployed_config.yaml expected_config.yaml

Suivi des changements de documentation

Suivez les changements de documentation pour la revue :

git diff --stat HEAD~5..HEAD -- docs/

FAQ

Que signifie « hunk » dans la sortie diff ?

Un hunk est un bloc contigu de changements dans un diff. Chaque ligne @@ commence un nouveau hunk. Git regroupe les changements proches en un seul hunk — si deux changements sont Ă  moins de 3 lignes l'un de l'autre (le contexte par dĂ©faut), ils apparaissent dans le mĂȘme hunk. Les hunks peuvent ĂȘtre indexĂ©s indĂ©pendamment avec git add -p.

Comment comparer deux branches dans Git ?

Utilisez git diff branch1..branch2 pour voir toutes les différences entre deux branches. Ajoutez --stat pour un résumé, ou -- path/to/file pour comparer un fichier spécifique. Pour comparer ce qu'une branche a ajouté depuis sa divergence, utilisez trois points : git diff branch1...branch2.

Ressources associées

Published on 2025-07-02
How to Compare Text Files: Diff Tools and Techniques | alltools.one