Sobes.tech
Junior

Quelle est la différence entre les commandes git rebase et git merge?

sobes.tech IA

Réponse de l'IA

La différence entre git rebase et git merge réside dans la façon dont les changements d'une branche sont intégrés dans une autre.

git merge combine les changements en créant un nouveau commit de fusion. L'historique des commits reste linéaire uniquement dans le cadre de chaque branche, mais le point de fusion crée une "branche".

// Exemple d'utilisation:
git checkout main
git merge feature/nouvelle-fonctionnalité

git rebase transfère les commits de la branche cible au-dessus des commits de la branche de base. Cela crée une histoire linéaire des commits, comme si le travail avait été effectué directement dans la branche de base. Les commits originaux de la branche sur laquelle le rebase est effectué sont réécrits avec de nouveaux commits parents.

// Exemple d'utilisation:
git checkout feature/nouvelle-fonctionnalité
git rebase main

Comparaison:

Caractéristique git merge git rebase
Type d'histoire Non linéaire (avec commits de fusion) Linéaire (réécrit les commits)
Historique des commits Est entièrement conservé Est modifié (les commits sont réécrits)
Commit de fusion Créé Non créé
Clarté de l'histoire Peut être plus difficile à suivre avec des fusions fréquentes Plus propre et linéaire, mais le contexte des fusions originales est perdu
Utilisation Recommandé pour les branches publiques Préféré pour les branches locales non publiées

Le choix entre eux dépend de la tâche et des préférences de l'équipe. Pour les branches publiques, on préfère généralement git merge pour conserver l'histoire. Sur les branches locales non publiées, git rebase aide à maintenir une histoire linéaire propre.