Les conflits de fusion se produisent lorsque des modifications concurrentes sont apportées à la même ligne d’un fichier, ou lorsqu’une personne modifie un fichier et qu’une autre personne supprime le même fichier. Consultez « Conflits de fusion ».
Conseil
Vous pouvez utiliser l’éditeur de conflit sur GitHub pour résoudre les conflits de fusion de modifications de ligne concurrents entre les branches qui font partie d’une demande de tirage. Consultez « Résolution d’un conflit de fusion sur GitHub ».
Conflits de fusion de modifications de ligne simultanées
Lorsque les modifications concurrentes affectent les mêmes lignes, choisissez les modifications à conserver, puis validez la résolution.
-
Ouvrez votre terminal ou Git Bash.
-
Accédez au référentiel Git local affecté par le conflit de fusion.
cd REPOSITORY-NAME -
Répertorie les fichiers affectés par le conflit de fusion. Dans cet exemple, le fichier styleguide.md présente un conflit de fusion.
$ git status > # On branch branch-b > # You have unmerged paths. > # (fix conflicts and run "git commit") > # > # Unmerged paths: > # (use "git add <file>..." to mark resolution) > # > # both modified: styleguide.md > # > no changes added to commit (use "git add" and/or "git commit -a") -
Ouvrez votre éditeur de texte préféré, par Visual Studio Codeexemple, et accédez au fichier qui a des conflits de fusion.
-
Recherchez le fichier pour le marqueur
<<<<<<<de conflit. Les modifications de la branche HEAD ou de la branche de base apparaissent après<<<<<<< HEAD, suivies par=======, puis les modifications de l’autre branche et>>>>>>> BRANCH-NAME.If you have questions, please <<<<<<< HEAD open an issue ======= ask your question in IRC. >>>>>>> branch-a -
Choisissez si vous voulez garder uniquement les changements de votre branche, garder seulement les changements de l’autre branche ou faire un nouveau changement, ce qui peut incorporer des changements dans les deux branches. Supprimez les marqueurs de conflit
<<<<<<<,=======,>>>>>>>et faites les changements que vous voulez dans la fusion finale. Par exemple, vous pouvez conserver les deux modifications :If you have questions, please open an issue or ask in our IRC channel if it's more urgent. -
Étape de vos modifications.
git add . -
Validez vos modifications avec un commentaire.
git commit -m "Resolve merge conflict by incorporating both suggestions"
Vous pouvez maintenant fusionner les branches sur la ligne de commande ou envoyer (push) vos modifications à votre référentielGitHub distant et fusionner vos modifications dans une demande de tirage( pull request).
Conflits de fusion de fichiers supprimés
Lorsqu’une branche supprime un fichier et qu’une autre branche modifie le même fichier, choisissez de conserver ou de supprimer le fichier, puis de valider la résolution.
-
Ouvrez votre terminal ou Git Bash.
-
Accédez au référentiel Git local affecté par le conflit de fusion.
cd REPOSITORY-NAME -
Répertorie les fichiers affectés par le conflit de fusion. Dans cet exemple, le fichier
README.mda un conflit de fusion.$ git status > # On branch main > # Your branch and 'origin/main' have diverged, > # and have 1 and 2 different commits each, respectively. > # (use "git pull" to merge the remote branch into yours) > # You have unmerged paths. > # (fix conflicts and run "git commit") > # > # Unmerged paths: > # (use "git add/rm <file>..." as appropriate to mark resolution) > # > # deleted by us: README.md > # > # no changes added to commit (use "git add" and/or "git commit -a") -
Ouvrez votre éditeur de texte préféré, par Visual Studio Codeexemple, et accédez au fichier qui a des conflits de fusion.
-
Déterminez s’il faut conserver le fichier supprimé. Pour l’ajouter à votre dépôt :
git add README.mdPour supprimer ce fichier de votre référentiel :
$ git rm README.md > README.md: needs merge > rm 'README.md' -
Validez vos modifications avec un commentaire.
$ git commit -m "Resolve merge conflict by keeping README.md file" > [branch-d 6f89e49] Merge branch 'branch-c' into branch-d
Une fois les conflits de fusion résolus, vous pouvez désormais envoyer vos modifications à votre référentiel GitHub distant ou fusionner votre demande de tirage dans sa branche de base.