Écrit par
Steph
le
194 mots - 1 minute de lecture
le
194 mots - 1 minute de lecture
Git - Le pouvoir de `rebase --onto`
Le problème
Alors, perso, comme je suis une dev sympa, j’essaie de faire une Pull Request (PR) par topic. Forcément, quand je suis sur un gros sujet, je les stack les unes sur les autres. Concrêtement ça veut dire que
git checkout main
git branch branch-1
git commit -m "#1"
git commit -m "#2"
git commit -m "#3"
# J'ouvre une PR et j'attends que mes gentils collègues me review.
git branch branch-2 # notez que je suis toujours sur `branch-1`
git commit -m "#1"
...
Du coup, l’historique de branch-2
comprends tous les commits de branch-1
.
Et paf, branch-1
est squashed & merged sur main
avec un simple commit de merge.
Dans ma vie d’avant je faisais :
git checkout main
git pull
git checkout branch-2
git rebase main
Et coucou les conflits ! Ou alors, je me risquais a un git rebase -i
en me disant que de toutes façons, je pourrais toujours me rabattre sur git reflog
.
Seulement, voila, il y a mieux !
La solution
On peut tout simplement :
git checkout main
git pull
git checkout branch-2
git rebase --onto main branch-1 branch-2
🤯 boom! Me remerciez pas 😏