GitLab - 8.8 Rebaser ses commits avec git pull --rebase

Quand votre historique local et l'historique distant divergent, un git pull classique crée un commit de fusion qui encombre l'historique. Un rebase replace vos commits au-dessus de ceux du dépôt distant. Cette leçon commence par une remise à zéro locale, une opération à utiliser avec prudence.

Revenir à la version distante

Le dépôt distant sert ici de référence unique. Si votre copie locale est dans un état confus, la commande git reset --hard origin/main la fait correspondre à la branche principale distante.

Attention : cette commande supprime les modifications locales non envoyées. Vérifiez qu'elles sont sauvegardées ou inutiles avant de la lancer.

git reset --hard origin/main

Rebaser ses modifications

Faites une modification locale et validez-la. Si le dépôt distant a changé entre-temps, par exemple suite à une modification faite sur GitLab, un git push est refusé.

Lancez alors git pull --rebase : Git reprend les commits distants, puis replace votre commit par-dessus. Les conflits éventuels se résolvent pendant le rebase, dans le cadre de votre commit. Aucun commit de fusion n'est créé.

git pull --rebase origin main
git push origin main
  • Vérifier que le dépôt distant sert de référence
  • Remettre la copie locale à zéro si nécessaire
  • Valider la modification localement
  • Lancer git pull --rebase origin main
  • Envoyer le résultat avec git push origin main

En résumé

git reset --hard remet la copie locale au niveau de la branche distante, en supprimant les modifications locales non envoyées. git pull --rebase intègre ensuite les changements distants sans commit de fusion. Un git push final partage le résultat avec l'équipe.

Points clés

  • Le dépôt distant sert de référence quand la copie locale diverge.
  • git reset --hard origin/main supprime les modifications locales non envoyées.
  • git pull --rebase place vos commits au-dessus des commits distants.
  • Le rebase évite les commits de fusion et garde un historique propre.
  • Les conflits se résolvent pendant le rebase.

Questions fréquentes

Qu'est-ce qu'un rebase ?

Un rebase rejoue vos commits locaux par-dessus une branche mise à jour. L'historique reste linéaire, sans commit de fusion.

Le git reset supprime-t-il vraiment mes modifications ?

Oui, les modifications locales non envoyées sont perdues. Sauvegardez ce qui compte avant de lancer cette commande.

Faut-il toujours utiliser le rebase ?

La vidéo le recommande fortement pour garder un historique très propre.