Mémo Git · Réécrire l'historique
Rebase interactif
git rebase -i <commit>
git rebase -i <commit> ouvre la liste des commits qui suivent ce commit. Pour chacun, tu choisis une action : le garder, le renommer, le modifier, le fusionner avec le précédent ou le supprimer. Tu peux aussi changer leur ordre.
Ce que ça fait
Réorganise une série de commits : réordonner, renommer, fusionner, modifier ou supprimer.
Un cas d'usage
Avant d'ouvrir ta pull request, tu regroupes les commits « wip » et corriges les messages.
Attention : Réécrit l'historique : à éviter sur des commits que d'autres ont déjà récupérés.
En ligne de commande
git rebase -i HEAD~5- Retouche les 5 derniers commits.
pick- Garde le commit tel quel.
reword- Garde le commit, mais change son message.
edit- S'arrête sur le commit pour le modifier (
git commit --amend, puisgit rebase --continue). squash / fixup- Fusionne avec le commit précédent, en combinant les messages ou en gardant celui du précédent.
drop- Supprime le commit.
Dans Merathon
- Clic droit sur le commit le plus ancien à retoucher → « Rebase interactif de <branche> depuis ce commit… ».
- Choisis une action par commit : Garder, Renommer, Modifier, Fusionner, Fixup ou Supprimer.
- Glisse les lignes pour changer l'ordre, puis clique sur « Lancer le rebase ».
- Si le rebase s'arrête (conflit ou « Modifier »), le bandeau du panneau de droite propose « Continuer ».
Questions fréquentes
Comment annuler un rebase interactif ?
Pendant le rebase, git rebase --abort. Après, git reflog puis git reset --hard <hash d'avant>.
Qu'est-ce que git commit --fixup ?
git commit --fixup <commit> crée un commit de correction ; git rebase -i --autosquash le place et le fusionne tout seul.