guide/whitespace-options.md

Différences entre les options d'espaces — diff -b, -w, -B, -Z et leurs équivalents git

Les différences exactes entre ignorer les espaces en fin de ligne, la quantité d'espaces (-b), tous les espaces (-w), les lignes vides (-B) et la casse, comparées avec les options de GNU diff et de git, exemples à l'appui.

Dernière mise à jour: 2026-09-23

Quand deux fichiers ont « le même contenu » mais que diff affiche une foule de différences, les espaces en sont souvent la cause : l'éditeur a supprimé les espaces en fin de ligne, converti les tabulations en espaces ou changé la largeur de l'indentation. Les outils diff proposent des options pour ignorer ces différences, mais chaque option n'ignore pas la même chose : il faut savoir précisément ce qu'elle fait.

Les options d'espaces de GNU diff

OptionNom longCe qui est ignoré
-Z--ignore-trailing-spaceLes espaces en fin de ligne
-E--ignore-tab-expansionLes différences dues à l'expansion des tabulations en espaces
-b--ignore-space-changeLes variations de quantité d'espaces, les espaces en fin de ligne
-w--ignore-all-spaceTous les espaces
-B--ignore-blank-linesLes modifications qui n'ajoutent ou ne suppriment que des lignes vides
-i--ignore-caseLa casse
--strip-trailing-crLe caractère CR en fin de ligne d'entrée

Les options correspondantes de git diff

Voici ce qu'en dit la documentation de git :

La différence décisive entre -b et -w

On confond souvent ces deux options. Tout tient à une question : distingue-t-on la présence ou l'absence d'espace ?

GaucheDroite-b (quantité d'espaces ignorée)-w (tous les espaces ignorés)
a ba bIdentiqueIdentique
a babDifférentIdentique
x = 1x=1DifférentIdentique
if (a) + espaces en fin de ligneif (a)IdentiqueIdentique
Indentation d'une tabulationIndentation de 4 espacesIdentiqueIdentique

-b réduit chaque groupe d'espaces à un seul espace, tandis que -w supprime tous les espaces. C'est pourquoi -w considère comme identiques x = 1 et x=1, et même int a et inta.

Le danger quand l'indentation a un sens

Dans les fichiers où l'indentation fait partie de la syntaxe, comme Python, YAML ou les Makefile, les options d'espaces peuvent masquer une vraie modification.

if ready:
    start()
    notify()
if ready:
    start()
notify()

Dans la seconde version, notify() est sorti du bloc if et le comportement a changé, mais avec -w tous les espaces sont supprimés et la différence disparaît. -b, lui, la détecte, car l'espace en début de ligne passe de « présent » à « absent ». En revanche, si l'indentation passe de 4 à 8 espaces et que le code entre dans un bloc plus profond, seule la quantité d'espaces a changé : -b ne voit rien non plus.

La méthode sûre consiste à comparer sans option d'espaces les fichiers où l'indentation compte. Prenez l'habitude d'utiliser les options d'espaces pour « vérifier qu'une modification n'est qu'un nettoyage », et de faire la vérification finale sans option.

La portée de l'option lignes vides (-B)

-B et --ignore-blank-lines de git masquent les modifications composées uniquement de lignes vides. Si l'ajout d'une ligne vide se trouve dans le même hunk qu'une vraie modification, cette ligne vide peut rester affichée. L'option est utile pour un document où l'on a changé le nombre de lignes vides entre paragraphes, ou quand un formateur de code a ajusté les lignes vides entre fonctions.

Correspondance avec les options de ce site

Ce siteGNU diff le plus prochegit diff le plus proche
Espaces : comparer tels quels(aucune option)(aucune option)
Espaces : ignorer les espaces en fin de ligne-Z--ignore-space-at-eol
Espaces : ignorer la quantité d'espaces-b-b
Espaces : ignorer tous les espaces-w-w
Ignorer la casse-i(pas d'équivalent)
Ignorer les lignes videsproche de -B (lignes vides exclues de la comparaison)proche de --ignore-blank-lines
Normaliser les fins de ligne--strip-trailing-cr + dernier saut de ligne ignoréproche de --ignore-cr-at-eol

L'option « Ignorer les lignes vides » de ce site retire complètement les lignes vides de la comparaison et se contente de les afficher en couleur atténuée. De plus, les options d'ignorance s'appliquent aussi au surlignage dans la ligne : avec « ignorer la quantité d'espaces », les passages qui ne diffèrent que par le nombre d'espaces ne sont pas surlignés.

Essayer avec cet outil

Collez les exemples du tableau ci-dessus dans le comparateur de texte et changez les options d'espaces une à une : la différence saute aux yeux. Les « différences invisibles » comme le CR en fin de ligne ou le saut de ligne en fin de fichier sont traitées dans Caractères de fin de ligne et différences invisibles, et la lecture du résultat sous forme de patch dans Lire un diff unifié.

Ouvrir le comparateur de texte