Middle
Quelle est la différence entre les commandes merge et rebase dans le système de gestion de versions Git?
sobes.tech IA
Réponse de l'IA
merge fusionne des branches en créant un nouveau commit avec deux parents, conservant l'historique des modifications. rebase déplace les commits d'une branche sur une autre, ordonnant linéairement l'historique, mais modifiant les hashes des commits.
-
Avec
merge:- Un nouveau commit de fusion est créé.
- L'historique des branches reste explicite.
- Des conflits peuvent survenir, résolus dans le nouveau commit.
# Exemple d'utilisation de merge git checkout branche-fonctionnalite git merge main # Résolution des conflits, si présents git commit -m "Fusionner main dans branche-fonctionnalite" -
Avec
rebase:- Les commits "se déplacent" et s'appliquent sur la branche cible.
- L'historique devient linéaire, peut sembler "plus propre".
- Les hashes des commits déplacés changent.
- Un conflit peut survenir pour chaque commit déplacé.
- Non recommandé pour les branches déjà publiées et utilisées par d'autres développeurs, car cela modifie l'historique.
# Exemple d'utilisation de rebase git checkout branche-fonctionnalite git rebase main # Résolution des conflits, si présents (répéter pour chaque commit en conflit) git add . git rebase --continue # ou git rebase --skip pour sauter le commit # ou git rebase --abort pour annuler
| Caractéristique | merge | rebase |
|---|---|---|
| Changement d'historique | Conserve l'historique | Le modifie (écrase) |
| Commits | Crée un commit de fusion | Déplace les commits existants |
| Linéarité de l'historique | Non (les branches divergent) | Oui (simplifie l'historique) |
| Approche | Non destructif | Potentiellement destructif |
| Applicabilité | Branches publiques et communes | Branches locales et personnelles |