Kaiditech

Git Merge vs Git Rebase : comprendre les différences et bien les utiliser

Lorsque vous travaillez avec Git en collaboration ou sur plusieurs fonctionnalités à la fois, vous aurez tôt ou tard besoin de combiner différentes branches. Deux commandes sont alors incontournables : git merge et git rebase.

Dans cet article, nous allons expliquer leurs différences, leurs avantages, leurs inconvénients et quand les utiliser.


Git Merge

Qu'est-ce que git merge ?

git merge permet de combiner l’historique d’une branche dans une autre tout en conservant les commits existants. Cela crée un commit de fusion (merge commit).

Exemple

git checkout main
git merge feature

Cela fusionne la branche feature dans main.

Avantages

  • Historique fidèle à la réalité.
  • Facile à comprendre en équipe.
  • Aucun risque de réécriture d'historique.

Inconvénients

  • L'historique peut devenir brouillon.
  • Création de nombreux commits de merge.

Git Rebase

Qu'est-ce que git rebase ?

git rebase réécrit l’historique en intégrant vos commits sur une autre base. C’est comme dire : “Refais ces commits comme s’ils avaient été créés à partir d’une autre branche.”

Exemple

git checkout feature
git rebase main

Cela “remonte” les commits de feature au-dessus de ceux de main.

Avantages

  • Historique linéaire plus propre.
  • Plus lisible avec git log.

Inconvénients

  • Réécrit l’historique → à éviter sur les branches partagées.
  • Peut générer des conflits plus complexes.

Cas pratique : merge

# Sur la branche main
git merge feature
* c3 - Merge branch 'feature' into main
|\
| * c2 - Ajout d'une fonctionnalité
|/
* c1 - Commit initial

Cas pratique : rebase

# Sur la branche feature
git rebase main
* c2' - Ajout d'une fonctionnalité (rejoué)
* c1 - Commit initial

Puis :

git checkout main
git merge feature --ff-only

Quand utiliser merge ?

  • Sur les branches principales (main, dev).
  • Pour préserver l’historique exact de l'équipe.
  • En fin de fonctionnalité, lors de la fusion finale.

Quand utiliser rebase ?

  • Avant un pull request pour nettoyer votre historique.
  • Pour synchroniser votre branche avec main sans créer de merge commit.
  • Sur vos propres branches uniquement.

Commandes utiles

git rebase -i HEAD~3 # Rebase interactif des 3 derniers commits
git merge --no-ff # Forcer un commit de merge
git pull --rebase # Tirer les changements avec rebase au lieu de merge

Conclusion

merge et rebase sont deux outils puissants. Le premier conserve l’historique tel qu’il s’est réellement produit, tandis que le second permet de le rendre plus lisible. L’important est de connaître leurs différences pour les utiliser au bon moment.


Besoin d'un article pratique sur les conflits de rebase et comment les résoudre ? Restez connecté !