Intermédiaire · 5 min de lecture
Merge, squash ou rebase : merger une pull request
Les trois boutons de GitHub, ce qu'ils font à l'historique, et lequel choisir.
Create a merge commit
Garde chaque commit de la branche plus un commit de merge. Historique complet, mais bruyant avec les commits « fix typo ». S'annule avec git revert -m 1.
$ git merge --no-ff feat/dark-mode
Squash and merge
Tous les commits de la PR deviennent un seul commit sur main. Historique propre, un commit par fonctionnalité, facile à annuler. Les commits de la branche n'entrent pas dans main : supprime la branche après.
$ git merge --squash feat/dark-mode$ git commit
Rebase and merge
Rejoue chaque commit au-dessus de main, sans commit de merge. Historique linéaire qui garde chaque commit : les commits de la PR doivent être propres.
Lequel choisir ?
La plupart des équipes : squash and merge (une PR = un commit). Des commits propres et bien découpés à garder : rebase and merge. Branches longues (release) : merge commit. Choisis-en un et impose-le dans les réglages du dépôt.
Après un squash merge
Ta branche locale semble « pas mergée » pour Git (commits différents). C'est normal : supprime-la avec -D une fois la PR vérifiée comme mergée.
$ git switch main && git pull$ git branch -D feat/dark-mode