• 6 hours
  • Easy

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

You can get support and mentoring from a private teacher via videoconference on this course.

Got it!

Last updated on 7/3/19

Résolvez un conflit

Log in or subscribe for free to enjoy all this course has to offer!

 

Vous avez vu dans le chapitre précédent comment fusionner des branches. Nous avons utilisé un exemple assez simple où tout s'est bien passé. Mais il arrive très souvent qu'il y aie des conflits entre les deux branches qui empêchent de les fusionner, par exemple lorsque plusieurs personnes travaillent en même temps sur un même fichier.

Exemple : votre branche master contient un fichier Hello.md avec une ligne de texte : "Hello les amis !". Votre branche universal contient un fichier Hello.md avec une ligne de texte : "Hello tout le monde !".

Si vous tentez de fusionner la branche universal dans la branche master :

git checkout master
git merge universal

Git va reconnaître qu'il existe un conflit entre les deux branches car la 1re ligne du fichier Hello est différente dans chacune des branches et afficher le message suivant : 

Auto-merging hello.md
CONFLICT (content): Merge conflict in hello.md
Automatic merge failed; fix conflicts and then commit the result.

Vous allez donc devoir ouvrir le fichier hello.md dans votre éditeur de texte. Si vous utilisez l'éditeur Vim, vous pouvez le faire à partir du terminal avec la commande : 

vim hello.md

Vous allez alors voir les différences de contenu du fichier hello.md entre les deux branches, et vous pouvez choisir quel contenu garder pour la branche master dans laquelle vous faites le merge. Par exemple, vous pouvez garder "Hello les amis", sauvegarder le fichier et revenir dans la console.

Maintenant que vous avez résolu le conflit, il vous reste à le dire à Git ! Car pour l'instant, si vous faites un git status, git vous dira que vous avez des branches non fusionnées ("unmerged paths"). Pour cela, faites un commit sans message : 

git commit

Git va détecter que vous avez résolu le conflit et vous proposer un message de commit par défaut :

 

Vous pouvez  alors personnaliser le message du commit si vous le souhaitez. Dans notre cas, la résolution étant assez simple, nous allons garder le message proposé par défaut et le sauvegarder en tapant :x

Git va alors vous confirmer que vos branches ont été fusionnées, et si vous consulter l'historique des commits avec git log, vous verrez apparaître le dernier commit de résolution du conflit avec le message :

 Merge branch 'universal'
Conflicts:
       hello.md

 

Example of certificate of achievement
Example of certificate of achievement