Menu
Coddy logo textTech

Git Rebase vs Merge

Dernière mise à jour

git merge et git rebase combinent tous deux le travail d'une branche dans une autre. git merge relie les deux historiques avec un commit de fusion, en conservant exactement ce qui s'est passé. git rebase rejoue vos commits un par un au-dessus de l'autre branche, produisant un historique propre et linéaire, mais en réécrivant vos commits au passage.

La règle d'or : ne jamais faire de rebase sur des commits que d'autres ont déjà récupérés. Essayez les deux dans le terminal playground : un vrai shell dans votre navigateur.

Côte à côte

Behaviorgit mergegit rebase
Forme de l'historiqueRamifié, avec un commit de fusionLinéaire
Réécrit les commitsNonOui
Sûr sur les branches partagéesOuiNon
Conserve l'historique exactOuiNon
Facile de retracer quand les choses ont fusionnéOuiPlus difficile

Syntaxe

CommandWhat it does
git merge featureFusionne feature dans la branche courante
git merge --no-ff featureCrée toujours un commit de fusion
git rebase mainRejoue les commits de la branche courante sur main
git rebase -i HEAD~3Modifie de façon interactive les 3 derniers commits
git rebase --abortAnnule un rebase en cours

FAQ git rebase vs merge

Quelle est la différence entre git rebase et git merge ?
git merge combine deux branches en créant un nouveau commit de fusion qui joint leurs historiques, en gardant la trace exacte de ce qui s'est passé. git rebase, en revanche, déplace vos commits pour qu'ils soient rejoués au-dessus d'une autre branche, produisant un historique en ligne droite mais réécrivant ces commits avec de nouveaux hashs. Merge conserve l'historique ; rebase le réécrit pour le rendre propre.
Quand utiliser merge et quand utiliser rebase ?
Utilisez merge pour intégrer une branche terminée (surtout partagée) : c'est sûr et non destructif. Utilisez rebase pour ranger vos propres commits locaux avant de les partager, ou pour mettre à jour une branche de fonctionnalité sur le dernier main afin d'obtenir un historique propre. Beaucoup d'équipes font un rebase en local, puis un merge dans main.
Quelle est la règle d'or du rebase ?
Ne faites jamais de rebase sur des commits sur lesquels d'autres ont déjà basé leur travail, généralement tout ce que vous avez poussé sur une branche partagée. Comme le rebase réécrit les commits, cela force tous les autres à réconcilier un historique divergent. Faites du rebase librement sur des commits locaux non poussés ; utilisez merge (ou revert) pour tout ce qui est déjà public.
Le rebase ou le merge provoque-t-il moins de conflits ?
Aucun n'évite les conflits, mais ils les font apparaître différemment. Un merge résout tous les conflits en une fois, dans le commit de fusion. Un rebase peut vous demander de résoudre les conflits commit par commit à mesure que chacun est rejoué. Le travail total est similaire ; le rebase l'étale simplement.
Puis-je m'entraîner en ligne ?
Oui. Ouvrez le terminal playground pour exécuter git merge et git rebase dans un vrai shell dans votre navigateur, sans rien installer. Le cours interactif et gratuit de Git de Coddy couvre aussi la fusion et le rebase étape par étape.
Coddy programming languages illustration

Apprenez Git avec Coddy

COMMENCER