Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Fusionner les Branches | Travailler avec les Branches dans Git
Essentiels de Git
course content

Contenu du cours

Essentiels de Git

Essentiels de Git

1. Introduction à Git
2. Interaction Plus Avancée
3. Annuler les Modifications
4. Travailler avec les Branches dans Git

book
Fusionner les Branches

Comprendre la Fusion de Branches

Dans Git, fusionner est le processus d'intégration des modifications d'une branche dans une autre. Le cas d'utilisation le plus courant est la fusion des branches de fonctionnalité dans la branche principale (par exemple, main ou master). Cela garantit que les dernières fonctionnalités et corrections de bugs sont incorporées dans la base de code principale.

Flux de Travail de Base pour la Fusion

Examinons d'abord les deux derniers commits. Rappelez-vous, nous sommes actuellement sur la branche feature/new-feature.

Comme vous pouvez le voir, notre branche master est un commit en retard, cependant, avant de fusionner les modifications, nous devons basculer vers la branche où nous voulons incorporer les modifications. Passons à la branche master et affichons les deux derniers commits sur cette branche :

La branche master est en effet un commit derrière la branche feature, alors fusionnons-les. Pour initier le processus de fusion, nous devons utiliser la commande git merge et spécifier la branche que nous voulons fusionner dans la branche actuelle. Par exemple, pour fusionner une branche de fonctionnalité nommée feature/new-feature dans la branche master, nous devrions exécuter la commande suivante :

Remarque

Le message affiché après l'exécution de la commande contient le terme Fast-forward, qui spécifie qu'une fusion fast-forward a été effectuée.

Nous discuterons des deux types de fusions plus tard dans ce chapitre, mais avant cela, examinons les deux derniers commits :

Nous sommes toujours sur la branche master, cependant, cette branche est maintenant à jour avec notre branche feature avec les deux branches pointant vers le même commit.

Remarque

Le HEAD pointe toujours vers la branche master puisque nous étions sur cette branche lors de la fusion.

Types de Fusion

En fait, il existe deux types d'opérations de fusion dans Git :

  • fusion en avance rapide ;
  • fusion à trois voies.

Fusion en avance rapide

Celle que nous avons effectuée est un exemple de fusion en avance rapide comme mentionné dans le message. Ce type de fusion est effectué si tous les commits d'une branche sur laquelle nous sommes actuellement (branche vérifiée) font également partie de la branche de fusion, ce qui signifie que l'historique des commits de ces branches ne diverge pas. Regardons l'illustration suivante pour clarifier cela :

Avec ce type de fusion, le pointeur de la branche vérifiée est simplement mis à jour vers le dernier commit.

Fusion à trois voies

Cependant, si l'historique des branches a divergé, ce qui signifie qu'après un certain commit commun, de nouveaux commits ont été effectués séparément sur chaque branche, alors une fusion à trois voies est effectuée.

Le terme "trois voies" fait référence aux trois versions impliquées dans la fusion :

  • la version de l'ancêtre commun le plus récent (commit);
  • la version du dernier commit dans la branche actuelle (HEAD);
  • la version du dernier commit dans la branche en cours de fusion.

Jetons un coup d'œil à l'illustration suivante d'une telle fusion :

Voici comment fonctionne une fusion à trois voies :

  1. Git identifie les modifications apportées sur chacune des branches après l'ancêtre commun le plus récent ;

  2. Si chaque branche a des modifications dans des fichiers différents ou dans des parties différentes du même fichier, Git fusionnera automatiquement les modifications en les combinant dans le commit résultant ;

  3. Sinon, un conflit de fusion se produira.

Nous discuterons des conflits de fusion dans le chapitre suivant.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 4
We're sorry to hear that something went wrong. What happened?
some-alt