Pré-requis
- Git 2.13.0 (Git Bash et Git GUI)
- Maven 3.x
- TortoiseGit 2.4.02
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”.
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.
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).
Si vous avez des suggestions ou des questions un petit commentaire c’est toujours utile. 🙂
Great article thank you for sharing!