Git/Recombinaison (rebase)

< Git

Recombinaison (rebase)

modifier

Le rebase permet de mettre à jour sa branche par-dessus une autre. Généralement on rebase une branche par rapport à la branche principale (main) :

 git rebase main

En cas de conflit, c'est-à-dire si une même ligne a été modifiée à la fois sur "main" et sur la branche à rebaser, le rebase s'arrête et on doit modifier le fichier pour déterminer le résultat final du commit déplacé. Puis on reprend le rebase avec :

 git add -A
 git rebase --continue

Si on ne veut pas passer du temps à régler manuellement chaque conflit, on peut le faire automatiquement :

  • En conservant les modifications de la branche de départ :
 git rebase origin/master -s recursive -X theirs
  • En conservant celles de la branche rebasée :
 git rebase origin/master -s recursive -X ours

rebase -i

modifier

Pour changer les messages des soumissions, leur ordre ou leur nombre, on peut utiliser le mode interactif (-i). Exemples :

  • sur la branche "main" :
 git rebase -i main
  • sur les trois derniers commits :
 git rebase -i HEAD~3

On peut effacer et fusionner des soumissions en choisissant l'option "s" (squash) ou changer leur ordre.

Pour annuler le rebase en cours :

 git rebase --abort
 Cette opération modifie les commit-id des soumissions affectées.