Git diff -w ignore les espaces blancs uniquement au début et à la fin des lignes

367

J'adore utiliser git diff -wpour ignorer les différences d'espaces. Mais, je viens de remarquer qu'il ignore même les différences d'espaces au milieu des lignes. Comment pourrais-je ignorer uniquement les différences d'espaces qui apparaissent au début (^) ou à la fin ($) des lignes?

ma11hew28
la source
31
Envisagé d'utiliser à la git diff -bplace?
Jonas Byström
5
"-b --ignore-space-change Ignorer les changements de quantité d'espace. Ceci ignore les espaces à la fin de la ligne et considère toutes les autres séquences d'un ou plusieurs caractères d'espaces comme équivalentes."
mowwwalker

Réponses:

451

Pour une utilisation en fin de ligne:

git diff --ignore-space-at-eol

Au lieu de ce que vous utilisez actuellement:

git diff -w (--ignore-all-space)

Pour le début de la ligne ... vous n'avez pas de chance si vous voulez une solution intégrée.

Cependant, si cela ne vous dérange pas de vous salir les mains, il y a un patch plutôt ancien qui flotte quelque part qui ajoute le support de "--ignore-space-at-sol".

Fake Code Monkey Rashid
la source
Merci, mais cela ne fonctionne pas si vous avez configuré le diff sur un outil externe .. des idées?
adardesign
@adardesign, je pense que cela devrait probablement être configuré dans l'outil externe. Je ne sais pas s'il y a quelque chose que git peut faire pour présenter le diff sans changements d'espaces ... pourrait être faux cependant; git est assez puissant ...
johnny
Ce serait bien de le configurer par défaut. Je veux dire -w ou -b ou --ignore-tout-espace. Il y a une discussion à ce sujet sur stackoverflow.com/questions/7310033/…
Artyom
8
Je suis d'accord avec la suggestion -b, car -w traite "abc def" et "abcdef" comme les mêmes, ce qui est rarement ce que je veux!
Richard Wiseman
3

C'est une vieille question, mais elle est toujours régulièrement consultée / nécessaire. Je veux poster pour avertir les lecteurs comme moi que les espaces blancs mentionnés dans la question du PO ne sont pas les mêmes que la définition de Regex, pour inclure les nouvelles lignes, les tabulations et les caractères d'espace - Git vous demande d'être explicite. Voir quelques options ici: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

Comme indiqué, git diff -bou git diff --ignore-space-changeignorera les espaces aux extrémités de ligne. Si vous souhaitez que ce paramètre soit votre comportement par défaut, la ligne suivante ajoute cette intention à votre fichier .gitconfig, de sorte qu'il ignorera toujours l'espace à la fin de la ligne:

git config --global core.whitespace trailing-space

Dans mon cas, j'ai trouvé cette question parce que j'étais intéressé à ignorer les "différences d'espaces de retour chariot", donc j'avais besoin de ceci:

git diff --ignore-cr-at-eolou git config --global core.whitespace cr-at-eold' ici .

Vous pouvez également en faire la valeur par défaut uniquement pour ce dépôt en omettant le paramètre --global et en archivant le fichier de paramètres de ce dépôt. Pour le problème CR que j'ai rencontré, il disparaît après l'enregistrement si warncrlf ou autocrlf = true dans la section [core] du fichier .gitconfig.

déprimé
la source