Gestion des conflits avec Git et TortoiseGit

Pré-requis

Contexte

Nous ne pouvons pas aborder le sujet des outils de gestion de versions (versioning) sans aborder la gestion de conflits. Au cours des développements c’est une situation couramment rencontrée. Plusieurs outils peuvent être utilisés pour gérer cette situation notamment KDIFF3, ce tutoriel mettra en œuvre l’utilisation de TortoiseGit . Comment aborder la gestion de conflits, cette étape clef du développement  en évitant certains pièges qui peuvent  nous mettre dans une situation inconfortable ? Nous allons répondre à cette question en vous proposant une suite de commandes.

Définir TortoiseGit comme outil de gestion des conflits

La définition de TortoiseGit  est assez simple à mettre en œuvre. Deux possibilités s’offrent à vous la manière “douce” en utilisant les lignes de commandes ci-dessous.

> git config --global merge.tool tortoisemerge
> git config --global mergetool.tortoisemerge.cmd '"C:/Program Files/TortoiseGit/bin/TortoiseGitMerge.exe" -base:"$BASE" -theirs:"$REMOTE" -mine:"$LOCAL" -merged:"$MERGED"'

La manière “forte” consiste à éditer directement le fichier de configuration de Git localisé dans : C:\Users\\.gitconfig.

[merge]
    tool = tortoisemerge
[mergetool "tortoisemerge"]
    cmd = \"C:/Program Files/TortoiseGit/bin/TortoiseGitMerge.exe\" -base:\"$BASE\" -theirs:\"$REMOTE\" -mine:\"$LOCAL\" -merged:\"$MERGED\"

Point de départ

La gestion d’un conflit est issu du besoin d’envoyer un développement réalisé à partir d’une branche locale vers la branche distante cible. Une fois le développement terminé vous souhaitez synchroniser votre branche locale via les commandes git pull rebase et git pull. comme vu dans  l’article “Démarrer un développement avec Git”.

Point de départ
Image du point de départ sur la branche locale

Résoudre le conflit et vérifier la compilation du projet

À ce stade  vous êtes en phase de finalisation vos opérations de fusion (merge) : vous avez arbitré le conflits en choisissant les versions à conserver. La commande git status  vous suggère de lancer la commande git rebase –continue afin de clôturer la gestion de votre conflit. C’est  à ce stade que vous pouvez vous tromper car git n’effectue pas la vérification de disponibilité de votre projet (compilation).  C’est à cet instant que rentre en scène  la  star j’ai cité  MAVEN qui va  nous permettre de vérifier que l’on a rien cassé en gérant le conflit via sa commande mvn clean install bien entendu pour les projets dont la gestion des librairies et l’intégration continue sont réalisés à partir de cette dernière.

Clean install
État des commandes après vérification de la compilation

Clôturer la gestion du conflit

Suite à l’étape de vérification vous êtes enfin prêt à pousser votre développement sur la branche distante, à moins qu’un autre développeur se soit amusé à pousser un commit supplémentaire en lien avec le vôtre. Dans ce cas c’est le dernier à pousser un développement qui résout les potentiels conflits.

Dans le meilleur des cas, après avoir vérifier la compilation de votre projet  vous pouvez lancer votre commande  git rebase –continue votre gestion de conflits est terminée. Vous pouvez donc pousser vos développements sur  la branche distance (git push).

Etat final
État des commandes une fois la gestion du conflit résolu

Si vous avez des suggestions ou des questions un petit commentaire c’est toujours utile. 🙂

 

One thought on “Gestion des conflits avec Git et TortoiseGit

Leave a Reply

Your email address will not be published. Required fields are marked *