Git Rebase
Dernière mise à jour
git rebase déplace les commits de votre branche pour qu'ils soient rejoués au-dessus d'une autre branche, produisant un historique droit et linéaire au lieu d'un commit de fusion. Le rebase interactif (-i) va plus loin en vous laissant fusionner, réordonner, modifier ou supprimer des commits. Comme le rebasing réécrit les commits, ne le faites que sur un travail que vous n'avez pas encore partagé.
Essayez ceci dans le terminal playground : un vrai shell dans votre navigateur, rien à installer.
Syntaxe
| Command | What it does |
|---|---|
git rebase main | Rejoue vos commits au-dessus de main |
git rebase -i HEAD~3 | Modifie interactivement les 3 derniers commits |
git rebase --onto main old new | Déplace une plage de commits sur main |
git rebase --continue | Reprend après résolution des conflits |
git rebase --abort | Annule le rebase et restaure la branche |
git pull --rebase | Fait un pull et un rebase au lieu d'un merge |
Mots-clés du rebase interactif
Dans l'éditeur qu'ouvre -i, remplacez pick par l'un de ceux-ci.
| Keyword | What it does |
|---|---|
pick | Conserve le commit |
reword | Conserve le commit, modifie son message |
squash | Fusionne dans le commit précédent, réunit les messages |
fixup | Fusionne mais abandonne ce message |
drop | Supprime entièrement le commit |
FAQ git rebase
Que fait git rebase ?
Il prend les commits de votre branche actuelle et les rejoue un par un au-dessus d'une autre branche, comme si vous aviez commencé votre travail à partir du dernier commit de cette branche. Le résultat est un historique linéaire sans commit de fusion. Les commits sont réécrits (ils reçoivent de nouveaux hashes) au cours du processus.
Qu'est-ce que le rebase interactif ?
git rebase -i <base> ouvre un éditeur listant les commits depuis <base>, où vous pouvez les réordonner, en squash plusieurs en un seul, reword les messages, edit un commit ou le drop. C'est l'outil principal pour nettoyer une série de commits en désordre avant de les partager.Quelle est la règle d'or du rebasing ?
Ne rebasez jamais des commits sur lesquels d'autres ont déjà fondé leur travail, généralement tout ce qui a été poussé sur une branche partagée. Comme le rebase réécrit les commits, le faire oblige tous les autres à réconcilier un historique divergent. Rebasez librement les commits locaux non poussés ; utilisez merge ou revert pour les commits publics.
Comment corriger ou annuler un rebase avec des conflits ?
git add, puis exécutez git rebase --continue. Utilisez git rebase --skip pour abandonner le commit actuel, ou git rebase --abort pour tout annuler et remettre la branche dans l'état où elle était avant le début du rebase.Puis-je m'entraîner en ligne ?
git rebase dans un vrai shell dans votre navigateur, rien à installer. Le cours Git interactif et gratuit de Coddy couvre aussi le rebasing étape par étape.