Merge vs rebase
1 - Merge
git merge ma_branche master
Cette méthode ajoute donc un commit de merge mais les autres commits n'ont pas été impactés et un simple remove du dernier commit vous permez de revenir à l'état précédent. Cette méthode est donc non destructeur.
2 - Rebase
git checkout ma_branche
git rebase master
Pour faire un rebase, git recherche le premier ancêtre commun et réapplique chacun des commits de notre branche (ma_branche) sur l'extrémité de la branche cible (master). Chacun des commits réappliqués est modifié ( résultant de la fusion des 2 branches).
3 - Comparaison
Il faut préconiser un rebase qui permet d'avoir un historique et un graphe propre des commits, plutot qu'un merge qui va vous ajouter des commits de merge en cas de conflit qui bien souvent n'amènera rien et polluera l'historique le graphe
Mais il faut aussi avouer qu'il faut maitrîser et comprendre ce que l'on fait pour ne pas faire de bêtises irréparables.
Pour bien visualiser ce qui est fait voici la différence entre la merge et un rebase au niveau de l'historique et du graphe.
image.png
Si vous êtes plusieurs à travailler sur une même branche et ne pas faire de merge à chaque fois que vous voulez récupérer le travail d'un collègue, il existe la commande suivante pour intégrer le code comme un rebase
git pull --rebase
3 - Pour aller plus loin
https://git-scm.com/book/fr/v2/Les-branches-avec-Git-Rebaser-Rebasing