Mémo Git · Réécrire l'historique

Regrouper des commits

git rebase -i (squash)

Regrouper (« squasher ») des commits fusionne plusieurs petits commits en un seul, plus lisible. La méthode classique est le rebase interactif : on garde le premier commit en pick et on passe les suivants en squash ou fixup.

Ce que ça fait

Fusionne plusieurs commits en un seul, à la place du plus ancien.

Un cas d'usage

Trois petits commits de mise au point ne forment en réalité qu'un seul changement.

Attention : Réécrit l'historique de la branche.

En ligne de commande

git rebase -i HEAD~3
Puis squash (ou s) sur les commits à fusionner dans le précédent.
git reset --soft HEAD~3 && git commit
Alternative : défait les 3 commits en gardant tout indexé, puis recommite.
git merge --squash <branche>
Intègre toute une branche en un seul commit.

Dans Merathon

  1. Dans le graphe, sélectionne les commits avec Ctrl + clic ou Maj + clic.
  2. Clic droit → « Squasher les N commits sélectionnés… ».
  3. Ajuste le message du commit obtenu puis valide.

Questions fréquentes

Quelle différence entre squash et fixup ?

squash combine les messages des commits fusionnés ; fixup garde seulement le message du premier.

Faut-il squasher avant une pull request ?

Ça dépend de l'équipe. Beaucoup de forges proposent « Squash and merge », qui le fait à l'intégration.

Voir aussi