Article original : How to Use Git Rebase – Tutorial for Beginners
Par Nick Abbene
Le paysage de l'ingénierie logicielle est en constante évolution. Rester à jour sur les nouvelles technologies est absolument crucial.
Mais en tant que développeurs, nous oublions parfois à quel point il est important d'approfondir les technologies éprouvées qui constituent l'épine dorsale du développement logiciel – comme les systèmes de contrôle de version tels que Git.
Dans cet article, nous allons examiner une alternative à la commande git merge largement utilisée. Cette alternative est git rebase.
Comprendre Git Rebase
Git rebase est une fonctionnalité puissante de Git qui permet de réécrire et de réorganiser votre historique de commits. Git rebase vous permet de changer la base de votre branche.
Contrairement à la fusion, qui crée un nouveau commit de fusion et combine l'historique des deux branches, le rebasage rejoue les commits d'une branche sur une autre. Cela résulte en un historique de commits linéaire, plus facile à lire et à comprendre.
Préparer le terrain avec Git Merge
Vous ne comprenez pas la différence entre git merge et git rebase ? Considérons un exemple. Vous travaillez sur une nouvelle modification, donc vous créez une nouvelle branche avec git checkout -b. Vous commitez ensuite quelques modifications sur votre nouvelle branche.
Illustration de base des commits
Pendant ce temps, quelqu'un d'autre travaillant sur une partie séparée du système fusionne sa propre Pull Request ! L'historique git ressemble maintenant un peu à ceci, car ils n'ont aucun contexte ou connaissance de vos modifications.
Illustration de git, votre coéquipier a poussé de nouveaux commits.
Vous terminez vos modifications avec un dernier commit final. Mais que faites-vous ensuite pour les réintégrer dans la branche principale ?
Illustration de git, avec un commit supplémentaire sur votre branche
Eh bien, vous avez deux options. La première est une commande que vous connaissez probablement si vous avez déjà utilisé Git : git merge. Le résultat final ressemble un peu à ceci.
Illustration de git, avec un commit de fusion supplémentaire
Comme vous pouvez le voir, nous avons un commit supplémentaire juste pour la fusion. L'historique se poursuit à partir de là, et c'est bien ! De nombreux codeurs s'en sortent très bien en utilisant des commits de fusion. Mais que se passe-t-il si vous avez une branche de longue durée que vous devez maintenir à jour ?
Dans ce cas, nous travaillons sur une branche nommée foo. Nos commits sont ceux avec les commentaires, some other thing, adding test, et addressing comments. Jetez un coup d'œil à ce à quoi ressemble l'historique.
Historique Git avec fusion
Ces commits Merge branch 'main' into foo ne semblent pas très utiles - ils sont simplement logistiques et ne décrivent pas réellement les modifications que vous apportez à votre branche. Il est également un peu difficile de raisonner sur les modifications consécutives que vous avez apportées à votre branche actuelle lorsque vous regardez votre historique Git.
Comment effectuer le rebase
Explorons l'alternative avec git rebase. En reprenant le même exemple ci-dessus, commençons par notre dernier commit juste avant d'être prêt à fusionner à nouveau dans main.
Le cas de base
Cette fois, nous allons faire un git rebase. Cela va effectivement rejouer vos commits par-dessus les nouveaux commits (connus sous le nom de HEAD) de main, évitant ainsi les commits de fusion.
Illustration du rebasage
Alors, comment accomplissons-nous cela ? Tout en étant sur votre branche secondaire (dans notre cas, foo), vous voudrez faire ce qui suit.
- Passez à votre branche
mainavecgit checkout main - Mettez à jour votre branche locale
mainavecgit pull. Cela permet d'avoir le dernier HEAD demaindisponible pour le rebase. - Revenez à votre branche
fooavecgit checkout foo - Utilisez
git rebase main, cela complétera le rebase, en rejouant vos commits par-dessus le HEAD demain.
En comparaison avec l'exemple précédent, à quoi cela ressemble-t-il avec les mêmes commits "some other thing", "adding test", et "addressing comments" ?
Historique des commits plus propre avec git rebase
Très bien ! C'est plus propre, et en regardant l'historique de ma branche, il est assez simple de raisonner sur les modifications de ma branche. Je n'ai besoin de savoir que par où j'ai commencé (hash de commit 2a2db46).
Bonnes pratiques de Rebase
Bien que git rebase garde sans aucun doute votre historique de commits plus propre, il y a quelques points à garder à l'esprit :
- Utilisez rebase uniquement pour les branches locales. Ne rebasez pas les branches sur lesquelles d'autres personnes travaillent. Rebase modifie l'historique des commits, et les autres ne seront pas au courant.
- Récupérez et rebasez régulièrement vos branches locales pour rester à jour avec la branche principale. Les conflits deviennent compliqués ! Rebases tôt et souvent.
Conclusion
Bien qu'il soit facile de se laisser emporter par les nouvelles technologies en plein essor telles que les outils d'intelligence artificielle et le edge computing, il est également important pour nous, en tant que développeurs, de faire un pas en arrière et de nous assurer que nous utilisons des outils éprouvés comme Git à leur plein potentiel.
Dans cet article, nous avons examiné git rebase, et donné un exemple de pourquoi le rebasage pourrait être un bon outil dans votre boîte à outils.
Bon rebasage !