Comment résoudre les conflits lors de la fusion des modifications d'une branche Git distante

GitGitBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Git est un puissant système de contrôle de version qui permet une collaboration transparente, mais la gestion des conflits de fusion peut être un défi. Ce tutoriel vous guidera tout au long du processus de résolution des conflits lors de la fusion des modifications provenant d'une branche Git distante, garantissant ainsi un flux de travail Git fluide et efficace.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/merge("Merge Histories") subgraph Lab Skills git/add -.-> lab-414839{{"Comment résoudre les conflits lors de la fusion des modifications d'une branche Git distante"}} git/status -.-> lab-414839{{"Comment résoudre les conflits lors de la fusion des modifications d'une branche Git distante"}} git/commit -.-> lab-414839{{"Comment résoudre les conflits lors de la fusion des modifications d'une branche Git distante"}} git/checkout -.-> lab-414839{{"Comment résoudre les conflits lors de la fusion des modifications d'une branche Git distante"}} git/merge -.-> lab-414839{{"Comment résoudre les conflits lors de la fusion des modifications d'une branche Git distante"}} end

Comprendre les bases de la fusion dans Git

Git est un système de contrôle de version distribué qui permet à plusieurs développeurs de collaborer sur un projet en partageant et en fusionnant des modifications. La fusion est le processus qui consiste à combiner les modifications provenant de différentes branches dans une seule branche. Lorsque vous travaillez sur un projet avec plusieurs collaborateurs, il est courant de rencontrer des conflits de fusion, qui se produisent lorsque Git est incapable de résoudre automatiquement les différences entre les modifications apportées dans différentes branches.

Qu'est-ce qu'un conflit de fusion?

Un conflit de fusion se produit lorsque deux personnes ou plus ont apporté des modifications à la même partie d'un fichier, et que Git est incapable de déterminer quelles modifications doivent être prioritaires. Cela peut se produire lorsque deux personnes ont modifié la même ligne de code, ou lorsqu'une personne a ajouté une ligne et qu'une autre l'a supprimée.

Quand les conflits de fusion se produisent-ils?

Les conflits de fusion peuvent se produire dans les scénarios suivants :

  • Lorsque vous essayez de fusionner deux branches qui ont des modifications conflictuelles
  • Lorsque vous essayez de rebaser une branche qui a des modifications conflictuelles
  • Lorsque vous essayez de tirer (pull) des modifications depuis un dépôt distant qui ont des modifications conflictuelles avec votre dépôt local

Comprendre le processus de fusion

Lorsque vous initiez une fusion, Git tentera d'automatiquement combiner les modifications des deux branches. Si Git est capable de le faire sans aucun conflit, la fusion sera réussie, et vous pourrez continuer à travailler sur la branche fusionnée.

Cependant, si Git rencontre un conflit, il marquera les sections conflictuelles dans les fichiers concernés, et vous devrez résoudre manuellement les conflits avant de pouvoir terminer la fusion.

graph LR A[Local Branch] -- Merge --> B[Remote Branch] B[Remote Branch] -- Merge --> A[Local Branch] A -- Conflict --> C[Merge Conflict] B -- Conflict --> C[Merge Conflict]

Résoudre les conflits de fusion

Pour résoudre un conflit de fusion, vous devrez ouvrir les fichiers conflictuels, examiner les modifications et décider quelles modifications conserver. Git marquera les sections conflictuelles avec des marqueurs spéciaux, et vous devrez éditer manuellement les fichiers pour supprimer les marqueurs de conflit et intégrer les modifications souhaitées.

Après avoir résolu les conflits, vous devrez ajouter les fichiers résolus à la zone de préparation (staging area) et valider (commit) la résolution de la fusion.

Identifier et analyser les conflits de fusion

Identifier les conflits de fusion

Lorsqu'un conflit de fusion se produit, Git marque les sections conflictuelles dans les fichiers concernés avec des marqueurs spéciaux. Ces marqueurs indiquent les modifications apportées dans les différentes branches et où le conflit s'est produit.

Les marqueurs de conflit ressemblent à ceci :

<<<<<<< HEAD
## Your changes
=======
## Changes from the other branch
>>>>>>> other-branch

Les lignes <<<<<<< HEAD et >>>>>>> other-branch indiquent le début et la fin des sections conflictuelles, et la ligne ======= sépare les modifications des deux branches différentes.

Analyser les conflits de fusion

Pour analyser un conflit de fusion, vous devrez ouvrir les fichiers concernés et examiner les modifications apportées dans les différentes branches. Recherchez les marqueurs de conflit et comprenez les différences entre les modifications.

Voici un exemple de conflit de fusion dans un fichier :

<<<<<<< HEAD
## This is a heading
This is some text that was changed in the local branch.
=======
## This is a heading
This is some text that was changed in the remote branch.
>>>>>>> remote-branch

Dans cet exemple, le même fichier a été modifié à la fois dans la branche locale et dans la branche distante, et Git n'a pas été en mesure de résoudre automatiquement le conflit.

Utiliser les commandes Git pour identifier les conflits

Vous pouvez utiliser les commandes Git suivantes pour vous aider à identifier et analyser les conflits de fusion :

  • git status : Cette commande vous montrera quels fichiers ont des conflits de fusion.
  • git diff : Cette commande vous montrera les différences entre les modifications dans les différentes branches.
  • git log --merge : Cette commande vous montrera l'historique des validations (commits) pour les branches conflictuelles.

En utilisant ces commandes, vous pouvez mieux comprendre le contexte du conflit de fusion et prendre des décisions éclairées sur la manière de le résoudre.

Résoudre les conflits de fusion étape par étape

Étape 1 : Identifier les fichiers conflictuels

La première étape pour résoudre un conflit de fusion consiste à identifier les fichiers qui présentent des conflits. Vous pouvez le faire en exécutant la commande git status, qui répertoriera tous les fichiers avec des conflits de fusion.

$ git status
On branch main
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)

Unmerged files:
(use "git add <file>..." to mark resolution)
modified: file1.txt
modified: file2.txt

Dans cet exemple, les fichiers file1.txt et file2.txt ont des conflits de fusion qui doivent être résolus.

Étape 2 : Ouvrir les fichiers conflictuels

Ensuite, ouvrez les fichiers conflictuels dans un éditeur de texte ou un IDE. Vous verrez les marqueurs de conflit qui indiquent où les conflits se produisent.

<<<<<<< HEAD
## This is a heading
This is some text that was changed in the local branch.
=======
## This is a heading
This is some text that was changed in the remote branch.
>>>>>>> remote-branch

Étape 3 : Résoudre les conflits

Pour résoudre les conflits, vous devrez éditer manuellement les fichiers et choisir quelles modifications conserver. Supprimez les marqueurs de conflit et conservez les modifications que vous souhaitez inclure dans la version finale du fichier.

## This is a heading
This is some text that was changed in both the local and remote branches, and I've chosen to keep the changes from the remote branch.

Étape 4 : Préparer les fichiers résolus

Après avoir résolu les conflits, ajoutez les fichiers résolus à la zone de préparation (staging area) en utilisant la commande git add.

$ git add file1.txt file2.txt

Étape 5 : Valider la résolution de la fusion

Enfin, validez (commit) la résolution de la fusion en utilisant la commande git commit.

$ git commit -m "Resolved merge conflicts"

En suivant ces étapes, vous pouvez résoudre avec succès les conflits de fusion et terminer le processus de fusion.

Résumé

Maîtriser l'art de résoudre les conflits de fusion dans Git est essentiel pour maintenir un environnement de développement collaboratif et productif basé sur Git. En comprenant les bases de la fusion dans Git, en identifiant et en analysant les conflits, et en suivant le processus étape par étape pour les résoudre, vous pouvez rationaliser votre flux de travail Git et garantir l'intégration réussie des modifications provenant des branches distantes.