En étape (4) j'aurai réécrit l'historique de la branche sur la branche elle-même en faisant git push --force origin ma-branche
à la place de git push --force origin master
.
Cela a plusieurs avantages :
1) Je ne force pas la réécriture du master
à chaque fois, ce qui obligerait tout le monde à mettre à jour son HEAD si des merges sont fréquents de cette branche vers lui.
2) Cela permet encore d'effectuer une PR/MR pour une review de code.
3) Cela permet de travailler sur la branche sans perturber les autres.
4) Je peux rebase
ma branche autant de fois que nécessaire sans impact sur master
.
J'oublie tout le temps la manipe :
git checkout #hashLast
git reset --soft #hashFirst
git commit --amend -m '1 2 3 4 5'
git rebase HEAD master
Un bon article sur le Git rebase pour Chlouchloutte. J'aime bien le message de fin :
" Cette commande est très complète, mais il faut garder à l’esprit qu’elle modifie l’historique, et donc ne doit être appliquée que sur des commits locaux, donc avant le push. S’il est tout de même possible de modifier une partie de l’historique déjà poussé, via un git push --force, cela est à éviter dans la majorité des situations, car cela causera des problèmes aux personnes ayant déjà récupéré les commits modifiés."
Un tutoriel très très simple (et visuel) sur la manière de merger et rebaser des branches dans Git.
Les commandes de base qui vous sauvent la mise.
Tuto sur la commande rebase avec Mercurial (qui devrait être le comportement par défaut)