Un conflit de fusion intervient lorsque l’on tente de fusionner deux branches qui modifient la même partie d’un même fichier. Dans ce cas, git va intégrer les deux versions dans le même fichier puis laisser le développeur décider du contenu final de cette partie.
L’objectif de ce tuto est d’apprendre à résoudre un conflit de fusion. (merge conflict)
Pour cela, nous allons devoir commencer par en causer un !
Étapes à suivre, une par une:
git cloneREADME.md contenant les paroles d’une chanson de votre choixgit add, git commit puis git pushbranche1 à partir de master, avec git checkout -bREADME.md de cette branche, modifier à votre guise la première phrase des paroles, créer un commit, puis envoyer les modifications de cette branche sur GitLabmaster avec git checkoutbranche2 à partir de master (comme dans l’étape 5)README.md de cette branche, modifier également la première phrase des paroles avec un texte différent de celui saisi à l’étape 6, créer un commit, puis envoyer les modifications de cette branche sur GitLabmasterbranche1 dans master, avec git mergebranche2 dans masterSi vous avez bien suivi cette procédure, vous devriez obtenir un conflit de fusion:
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
Voici ce que devrait répondre git status:
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: README.md
Pour résoudre ce conflit, il va falloir:
README.md dans son éditeur de code,git représente le conflit, et la source de chaque version,Au moment du commit:
- si vous vous retrouvez dans l’éditeur
vi, tapez:wqpour quitter en sauvegardant le fichier;- si vous vous retrouvez dans l’éditeur
nano, pressezCtrl-Xpour quitter.
Après la résolution du conflit de fusion, git status devrait répondre ceci:
On branch master
nothing to commit, working tree clean
branche1 et branche2, non seulement dans votre dépôt local, mais aussi dans le dépôt distant associé (sur GitLab).