Contenu du cours
Essentiels de Git
Essentiels de Git
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 :
-
Git identifie les modifications apportées sur chacune des branches après l'ancêtre commun le plus récent ;
-
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 ;
-
Sinon, un conflit de fusion se produira.
Nous discuterons des conflits de fusion dans le chapitre suivant.
Merci pour vos commentaires !