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.