GIT REBASE

Fusionner une branche avec une autre avec rebasage :
Les commits de la branche branchname intégrée sont réécrits et translatés sur newbase. La fusion se fait en fast-forward.
$ git rebase newbase branchname
branchname aura comme nouvelle base newbase
ou, implicitement la branche rebasée et déplacée est la branche courante sur newbase :
$ git checkout branchname $ git rebase newbase
ex :
$ git log --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %ad | %s%d [%C(bold blue)%an%Creset]' --graph --date=short --all * c570971 - (master) 2018-06-18 | Added README (master) [darwinos] | * 28917a4 - (HEAD -> greet) 2013-04-13 | Updated Rakefile (HEAD -> greet) [darwinos] | * 4dac415 - 2013-04-13 | Hello uses Greeter [darwinos] | * 39347b3 - 2013-04-13 | Added greeter class [darwinos] |/ * 96ee164 - 2013-04-13 | Added a Rakefile. [darwinos] $ git checkout greet Déjà sur 'greet' $ git rebase master Premièrement, rembobinons head pour rejouer votre travail par-dessus... Application de Added greeter class Application de Hello uses Greeter Application de Updated Rakefile $ git log --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %ad | %s%d [%C(bold blue)%an%Creset]' --graph --date=short --all * 4c6ba8c - (HEAD -> greet) 2013-04-13 | Updated Rakefile (HEAD -> greet) [darwinos] * 7793b69 - 2013-04-13 | Hello uses Greeter [darwinos] * 497a2b8 - 2013-04-13 | Added greeter class [darwinos] * c570971 - (master) 2018-06-18 | Added README (master) [darwinos] * 96ee164 - 2013-04-13 | Added a Rakefile. [darwinos]
Effectuer un rebasage interactif :
git rebase -i newbase
Attantion les commits sont inversés : de haut en bas, du plus ancien au plus récent.
Options interactives disponibles lors du rebasage :
-
p, pick = picorer le commit
r, reword = picorer le commit, mais reformuler son message
e, edit = picorer le commit, mais s’arrêter pour le modifier
s, squash = prendre le commit, mais le fusionner avec le précédent
f, fixup = comme « squash », mais en éliminant son message
x, exec = lancer la commande (reste de la ligne) dans un shell
d, drop = supprimer le commit
Effectuer un rebasage interactif pour réorganiser les n derniers commits :
git rebase -i HEAD~n