Comprendre les types de fusion

Git avancé

Amanda Crawford-Adamo

Software and Data Engineer

Je suis Amanda

Photo d'Amanda

Git avancé

Qu'est-ce que git merge ?

Commande git merge :

git merge
  • Combine les changements d'une branche dans une autre
  • Trouve la base commune entre deux branches
  • Permet différentes stratégies de fusion

Route où deux chemins se rejoignent avec deux voitures se retrouvant sur la même route

Git avancé

Fusion fast-forward

Qu'est-ce que la fusion fast-forward ?

  • Conserve un historique simple et linéaire
  • Idéal pour des branches courtes avec des changements simples

$$

Quand éviter

  • Besoin de préserver l'historique de branche
  • Développement complexe sur des branches de longue durée
  • Conflit de fusion entre branches : la fast-forward échoue aussitôt !
Git avancé

Fusion fast-forward (avant)

Graphique montrant deux branches : main et feature. Main a deux validations. La branche feature diverge après la dernière validation de main avec une validation supplémentaire dans sa branche.

Git avancé

Syntaxe de la fusion fast-forward

Fusion fast-forward par défaut

git checkout main
git merge feature_branch

Forcer la fusion fast-forward

git merge <branch> --ff-only

Exemple

git checkout main
git merge feature_branch --ff-only
Git avancé

Fusion fast-forward (après)

Graphique montrant deux branches : main et feature. Main a trois validations. La branche feature diverge après la deuxième validation de main avec une validation supplémentaire dans sa branche. La troisième validation de main est une copie de la dernière validation de feature.

Git avancé

Fusion récursive

Qu'est-ce qu'une fusion récursive ?

  • Crée un commit de fusion avec deux parents
  • Préserve tout l'historique du projet
  • Idéal pour des branches de longue durée
  • Maintient la structure de branchement

$$

Quand éviter

  • Si vous voulez un historique simple et linéaire
  • Changements rapides et mineurs
Git avancé

Fusion récursive (avant)

Graphique montrant deux branches : main et feature. Main a trois validations. La branche feature diverge après la première validation de main avec deux validations supplémentaires dans sa branche.

Git avancé

Syntaxe de la fusion récursive

Commande de fusion récursive :

git merge --no-ff <branch>

Exemple

$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.

$ git merge --no-ff feature_branch
Merge made by the 'recursive' strategy.
...
Git avancé

Fusion récursive (après)

Graphique montrant deux branches : main et feature. Main compte six validations. La branche feature diverge après la dernière validation de main avec deux validations supplémentaires. La branche main alterne les validations des deux branches. La dernière validation de main est un commit de fusion avec deux parents : la dernière validation de feature et la précédente de main.

Git avancé

Résumé

  • Les fusions fast-forward gardent un historique simple et linéaire
  • Les fusions récursives préservent le contexte historique
  • Les fusions récursives conviennent mieux aux développements complexes

Commandes de fusion fast-forward

git merge <branch_name> # commande par défaut
git merge --ff-only <branch_name> # forcer la fast-forward

Commande de fusion récursive

git merge --no-ff <branch_name>
Git avancé

Passons à la pratique !

Git avancé

Preparing Video For Download...