Résoudre des conflits GIT en ignorant les espaces blancs
Aujourd’hui je vous propose une petite astuce pour vous éviter bien des problèmes de résolution de conflits avec GIT.
Le contexte : un problème d’espace(s)
Supposons que vous collaborez avec quelqu’un sur un fichier source dans un langage qui ignore les espaces blancs, et que :
- vous avez retravaillé une partie du code
- votre collègue a de son côté modifié une autre partie du code et, par erreur bien entendu, remplacé toutes les tabulations par des espaces
Lorsque vous allez récupérer le code de votre collègue, GIT ne sera pas capable de fusionner automatiquement vos changements respectifs.
L’astuce : utiliser une stratégie de merge qui ignore les espaces
Voici donc la commande magique qui va vous faire gagner des heures de vie :
git merge -Xignore-space-change
Ce choix de stratégie (option -X) permet à GIT de savoir que votre langage de programmation n’a que faire des espaces blancs, et d’être ainsi beaucoup plus intelligent dans sa fusion. Normalement, ça ne devrait donc vous laisser à résoudre que les éventuels « vrais » conflits.
Bonus track : ignore-all-space
Il existe en réalité 2 stratégies de GIT pour résoudre ce problème : ignore-space-change, dont nous venons de parler, et ignore-all-space.
La différence est subtile :
- ignore-all-space ignore tous les espaces blancs
- ignore-space-change ignore uniquement les variations d’espaces blancs, en considérant comme équivalentes des séquences de N espaces blancs (N > 0)
Pour ceux qui voudraient en savoir plus, je vous invite à lire la documentation à ce sujet.
Originally published at web.leikir.io on July 31, 2018.