Comment gérer un conflit de fusion dans Git ?

Comment gérer un conflit de fusion dans Git ? Une commande Git affiche une interface qui permet de voir les différences entre les versions en conflit. Explication.

Lorsque l'on utilise le logiciel de gestion de versions Git dans le cadre d'un développement, il est courant qu'il se produise un conflit. C'est notamment le cas lorsque l'on valide un développement alors que les fichiers que l'on a modifiés ont déjà été modifiés par un autre développeur (voir aussi l'article : Comment annuler un commit Git ?).

Si un conflit se produit, la commande git mergetool sera d'une grande aide. Elle affiche une interface qui permet de voir les différences entre les versions en conflit et de décider de quelle manière fusionner les deux versions du fichier. On peut également récupérer les deux versions entières des fichiers pour les récupérer. On utilise pour cela la commande git checkout qui permet de récupérer la version à jour du fichier. En lui précisant l'option --ours, on récupère la version originale du fichier alors qu'en utilisant l'option --theirs, on obtient la version du fichier que l'on a modifiée. On peut ajouter le fichier de notre choix avec la commande git add puis valider le changement :

git checkout --ours fichier //Version originale
git checkout --theirs fichier //Version modifiée
git add fichier //Ajout de la version du fichier que l'on a choisie
git commit fichier //Mise à jour du dépôt avec la nouvelle version du fichier

Il existe aussi une commande permettant de voir les différents changements entre les versions dans un fichier. Cette commande affiche dans le fichier sur les sections modifiées trois versions : les changements que l'on a effectués, les changements effectués dans la branche par d'autres développeurs et l'ancêtre commun des deux fichiers :

git config merge.conflictstyle diff3 //Commande pour afficher les changements dans les fichiers.
<<<<<<<

Changements effectués dans ma branche.

Git