loading

JohnnyBEHAGUE

Télécharger mon CV

Git : le choix de l’éditeur pour résoudre les conflits et comparer les fichiers

Bonjour à tous!

Si vous utilisez Git, vous avez sans doute vos pratiques, par exemple utiliser un éditeur (Visual Studio, SourceTree, etc) pour créer des branches, push vos commits ou encore résoudre vos conflits. Je ne suis pas du tout partisan de cette méthode, pour la simple et bonne raison que l’on ne voit pas ce que l’on fait, et on n’est pas à l’abri d’une erreur de merge : rien ne vaut la maîtrise, surtout quand on parle de notre code source! Forcément, j’adore la méthode git mergetool.

Cependant si vous avez déjà utilisé cette commande, vous verrez que Git utilise soit votre éditeur par défaut, soit Vi, qui n’est pas très user friendly… Adorant Visual Studio Code, je voulais résoudre mes conflits dessus, et de simples commandes permettent de changer l’éditeur par défaut 🙂

1
2
3
4
git config --global merge.tool vscode
git config --global mergetool.vscode.cmd "code --wait $MERGED"
git config --global diff.tool vscode
git config --global difftool.vscode.cmd "code --wait --diff $LOCAL $REMOTE

Analysons ces lignes :

  • La première ligne nous sert à définir l’éditeur par défaut en cas de fusion : ça sera Visual Studio Code, qu’on appelle « vscode » dans notre cas;
  • La seconde ligne va nous servir à dire quelle commande exécuter quand on appelle l’outil « vscode » : on va appeler code (le nom de l’exe de Visual Studio Code) avec les paramètres permettant la fusion (–wait pour dire qu’on attend la fermeture de VSCode avant de poursuivre les actions dans la console, $MERGED représente les fichiers à merger qui ont des conflits
  • La troisième ligne définit l’éditeur par défaut pour comparer des fichiers de commits différents (je l’utilise très peu personnellement) : idem que la première ligne, on l’appellera « vscode »
  • Enfin la quatrième ligne nous sert à dire quelle commande exécuter lors de l’appel à « vscode » : idem on appelle code avec les bons paramètres (–wait est expliqué plus haut, –diff permet d’ouvrir l’éditeur de comparaison et prend en paramètre deux chemins de fichiers : on va donc lui donner $LOCAL pour notre branche locale et $REMOTE pour notre branche sur le serveur). On pourra donc savoir à tout moment les différences avec la version serveur

 

En exécutant ces lignes de code, vous devriez avoir ceci dans votre fichier .gitconfig :

[merge]
tool = vscode
[mergetool « vscode »]
cmd = code –wait $MERGED
tool = vscode
[difftool « vscode »]
cmd = code –wait –diff $LOCAL $REMOTE
J’espère que je vous ai appris ou rappeler une fonctionnalité essentielle de Git, à la prochaine et bon coding! 🙂

Leave a comment