Git peut souvent résoudre les différences entre les branches et les fusionner automatiquement. En règle générale, les changements se trouvent sur des lignes différentes, ou même dans des fichiers différents, ce qui rend la fusion simple à comprendre pour les ordinateurs. Toutefois, il y a parfois des changements concurrents que Git ne peut pas résoudre sans votre aide. Souvent, les conflits de fusion se produisent quand les personnes font des changements différents sur la même ligne du même fichier, ou quand une personne modifie un fichier et qu’une autre supprime le même fichier.
Vous devez résoudre tous les conflits de fusion avant de pouvoir fusionner une demande de tirage sur GitHub Enterprise Server. Si vous avez un conflit de fusion entre la branche de comparaison et la branche de base dans votre demande de tirage, vous pouvez voir une liste des fichiers avec des changements en conflit au-dessus du bouton Fusionner la demande de tirage. Le bouton Fusionner la demande de tirage est désactivé jusqu’à ce que vous ayez résolu tous les conflits entre la branche de comparaison et la branche de base.
Résolution des conflits de fusion
Pour résoudre un conflit de fusion, vous devez modifier manuellement le fichier en conflit pour sélectionner les changements que vous voulez garder dans la fusion finale. Il y a deux façons de résoudre un conflit de fusion :
- Si votre conflit de fusion est provoqué par des changements de ligne concurrents, par exemple, quand des personnes font des changements différents sur la même ligne du même fichier sur différentes branches dans votre dépôt Git, vous pouvez le résoudre sur GitHub Enterprise Server en utilisant l’éditeur de conflit. Pour plus d’informations, consultez « Résolution d’un conflit de fusion sur GitHub ».
- Pour tous les autres types de conflits de fusion, vous devez résoudre le conflit de fusion dans un clone local du dépôt et pousser le changement sur votre branche sur GitHub Enterprise Server. Vous pouvez utiliser la ligne de commande ou un outil de type GitHub Desktop pour pousser le changement. Pour plus d’informations, consultez « Résolution d’un conflit de fusion en utilisant la ligne de commande ».
Si vous avez un conflit de fusion sur la ligne de commande, vous ne pouvez pas pousser vos changements locaux sur GitHub Enterprise Server tant que vous ne résolvez pas le conflit de fusion localement sur votre ordinateur. Si vous essayez de fusionner sur la ligne de commande des branches qui ont un conflit de fusion, vous obtenez un message d’erreur. Pour plus d’informations, consultez « Résolution d’un conflit de fusion en utilisant la ligne de commande ».
$ git merge BRANCH-NAME
> Auto-merging styleguide.md
> CONFLICT (content): Merge conflict in styleguide.md
> Automatic merge failed; fix conflicts and then commit the result