Git rebase : fusionner les changements d’une branche à une autre

Git facilite grandement la vie quotidienne d’un développeur car il dispose de plusieurs commandes qui réalisent exactement ce dont nous avons besoin, comme la commande git rebase, qui permet de modifier, mettre en file d’attente et changer une variété de commits.

Cependant, son utilisation doit être faite avec prudence, car il peut entraîner certains problèmessurtout si vous travaillez dans la même branche qu’un coéquipier.

Mais tout de même, git rebase est d’une importance capitale lorsque la la branche sur laquelle vous travaillez n’est pas à jour par rapport à la branche principale. Essayons de mieux le comprendre ensuite !

  • Qu’est-ce que Git rebase et à quoi sert-il ?
  • Quelles sont les différences entre Git rebase et Git merge et quand les utiliser ?
  • Git interactive and non-interactive rebase : connaissez les deux types de rebase !
  • Quels sont les dangers de l’utilisation de Git rebase ?
  • Options pour l’utilisation de Git rebase et rebasing
  • Paramètres de rebasement de Git à l’aide de Git config

Allons-y !

Qu’est-ce que Git rebase et à quoi sert-il ?

O git rebasement est une commande utilisée lorsque nous avons besoin modifier un ou plusieurs commits.

Vous avez probablement connu la situation où vous êtes en train de faire un commit et où vous tombez sur le moment d’écrire un commentaire, cependant, vous ne pouvez pas penser à quelque chose qui définit ce que vous étiez en train de développer. À cause de cela, vous écrivez n’importe quoi pour que vos modifications soient immédiatement publiées sur GitHub.

Mais, nous savons que ce n’est pas du tout une bonne pratique. Ainsi, après avoir pris un café et vous être détendu, vous pouvez penser à un commentaire qui définit ce que vous étiez en train de développer. Pour modifier cet engagement, vous pouvez utiliser l’option commande git rebaseparce que il permet de modifier les commentaires des commits.

Avec git rebase, il est également possible de unifie plusieurs commits en un seul. Par exemple : vous avez créé une branche pour vous-même à partir de la branche principale, la branche que vous avez créée est donc à jour. Mais, quelque chose est arrivé et vous avez été sans développement pendant un certain temps et donc sans mettre à jour votre branche. Votre équipe a mis à jour la branche principale, donc lorsque vous essayez de télécharger vos changements vers la branche principale, vous rencontrerez un conflit.

Pour éviter que cela ne se produise, vous pouvez utiliser cette commande et mettre en file d’attente votre branche à partir du dernier commit mis à jour. De cette façon, git rebase récupérera votre commit et le mettre en file d’attente avec les derniers commits de la branche principalecomme le montre l’image ci-dessous.

Exemple de rebasement git : comment ça se passe

En outre, il est également possible de supprimer les commits qui ne sont plus nécessaires ou qui causent un bug dans l’application.

Quelles sont les différences entre Git rebase et Git merge et quand les utiliser ?

Pour comprendre la différence entre git merge et git rebase, il faut d’abord comprendre leurs individualités.

Comme nous l’avons dit plus haut, lorsque vous et votre équipe travaillez correctement en suivant Git Flow, chaque membre de l’équipe qui travaille sur une fonctionnalité individuelle va créer une branche à partir de la branche courantequi sera probablement la branche principale.

La branche principale est la branche principale. C’est là que tous les développeurs impliqués dans le projet enverront leurs modifications à la fin du développement et s’assureront que tout fonctionne comme il se doit, sans bogues. Cependant, il peut arriver que quelqu’un envoyer leurs modifications directement à la branche principale et tous les autres développeurs ont leurs branches mises à jour.

Avec cela, lorsque vous exécutez les commandes de fusionner votre branche de développement avec la branche principalevous aurez des conflits et pour les résoudre, vous avez la possibilité d’utiliser la git merge.

Pour ce faire, vous effectuerez les commandes suivantes après avoir résolu les conflits :

git checkout suabranch
git merge main

En gros, le git merge vous permet de prendre des lignes de commande indépendantes et de les intégrer dans une seule branchesans modifier la branche principale et en ajoutant un seul commit à votre branche de développement.

Le git rebase correspond au même scénario, cependant, il unifiera les branches et nous permettra d’avoir un historique linéaire. Cependant, nous verrons ci-dessous que, lors de son utilisation, nous pouvons rencontrer quelques problèmes.

 git checkout suabranch
 git rebase main

Comme nous l’avons vu ci-dessus, ils correspondent tous deux au même scénario, cependant, vous verrez probablement les développeurs en utilisant davantage git merge, parce que git rebase est trop risqué et il n’est pas du tout recommandé de l’utiliser sur les branches publiques.

Git interactive and non-interactive rebase : connaissez les deux types de rebase !

Il existe deux types de rebasement : le rebasement non interactif et le rebasement interactif. Apprenons à mieux les connaître.

Rebasement non interactif

Un git rebase non interactif « prend » des commits de une branche source et les met en file d’attente avec les commits de la branche cible. Cela fait que les commits de la branche source font partie de l’historique de la branche cible.

Rebasement interactif

Lorsque vous créez un dépôt sur GitHub, une branche et que vous commencez à commettre, vous êtes essentiellement.., écrire une histoire sur le développement de cette fonctionnalité sur laquelle vous travaillez.

Le rebasement interactif vous permet de changer et réécrire l’histoire de votre projet ou la fonctionnalité spécifique sur laquelle vous travaillez.

Pour faire un git rebase interactif, vous pouvez exécuter la commande suivante :

git rebase -i

Quels sont les dangers de l’utilisation de Git rebase ?

Peut-être que vous entendez parler de git rebase pour la première fois et que vous ne le voyez pas souvent, même dans le contenu sur git, et que vous ne voyez presque jamais personne l’utiliser souvent.

Et ce n’est pas seulement parce que cette La commande est déjà plus avancée. En fait, il est considéré comme un un commandement très dangereux. Il va sans dire que, si vous le maîtrisez, il peut vous rendre la vie beaucoup plus facile.

C’est parce qu’en utilisant une telle commande, vous serez réécriture de l’historique des livraisons de la branche.ce qui signifie que si vous travaillez avec quelqu’un d’autre, vous devez vous aligner avec lui pour être sur la même longueur d’onde.

Mais, si vous travaillez avec de nombreuses personnes, l’utilisation de cette commande peut vous tirer une balle dans le pied, même si tout le monde en est conscient et aligné. Donc, il est fortement recommandé que ne pas utiliser git rebase sur les branches publiquescar il est possible de détruire l’historique de la branche et de causer de nombreux problèmes.

Mais quoi qu’il en soit, c’est un commandement qui existe et qui, pour ceux qui le dominent, est d’une importance capitale. Donc, avant d’écarter l’hypothèse de son utilisation, entraînez-vous beaucoup à cette commande, comprenez tout son fonctionnement et ses risques et voyez dans quels moments il est intéressant de l’utiliser ou d’utiliser git merge.

Options à utiliser avec Git rebase et make the rebase

Presque rien ne se fait seul et git rebase a ses partenaires. Voyons donc quelles commandes nous pouvons utiliser avec git rebase. Nous savons également que la meilleure façon d’apprendre quelque chose est de le mettre en pratique. Voici donc quelques commandes que vous pouvez utiliser pour pratiquer rebase.

  • Git checkout -b namebranch

Lorsque vous créez un dépôt sur GitHub et que vous le liez à un projet, créez une branche pour vous-même avec la commande fournie ci-dessus.

  • Git commit -m « Écrire un commentaire »

Commencez par faire quelques commits sur la branche que vous avez créée ci-dessus. Pour ce faire, il suffit d’exécuter cette commande.

  • Git checkout main

Pour que vous puissiez former la commande git rebase, vous devrez insérer quelques commits dans la branche principale afin que la branche que vous avez créée là-haut ne soit pas dépassée par la branche principale. Pour ce faire, il suffit d’utiliser cette commande et de faire quelques modifications.

  • Journal de Git

Vous pouvez utiliser cette commande pour suivre les modifications de l’historique des commits.

  • Statut Git

Commande largement utilisée pour vérifier le statut de votre branche. Il sert aussi à vérifier s’il y a encore des fichiers qui ne sont pas dans la branche git.

  • Git rebase -continue

Cette commande indique à git que vous voulez continuer avec les changements que vous avez effectués.

  • Git rebase -skip

Cette commande vous permet d’ignorer les modifications. Et quand vous le voulez, rebasez votre dépôt sur la source.

Paramètres de rebasement de Git à l’aide de Git config

Le git config est une commande qui se passe de commentaires. Il sert pour faire la configuration relative à git et aide également à configurer rebase, avec les commandes :

rebase.stat

Cette commande n’est rien d’autre qu’un booléen, qui par défaut est initialisé comme faux. Il sert à montrer ce qui a changé depuis le dernier rebasement.

rebase.autoSquash

Il s’agit également d’une valeur booléenne, mais sa fonction est de modifier le comportement de autoSquash.

rebase.autoStash

Option que rebase fournit très utile pour faire des changements locaux. La réserve sera appliquée dès que le rebasement sera terminé.

rebase.missingCommitsCheck

Peut être utilisé pour changer les valeurs qui modifient les valeurs des commits manquants.

rebase.instructionFormat

Rappelle git log, cependant, il mettra en forme la présentation de la rebase interactive.

rebase.backend

Commande standard du backend pour rebase. Il dispose de deux options : modifier et fusionner.

rebase.abbreviateCommands

Il s’agit également d’un booléen qui, s’il est défini à true, entraînera l’abréviation des noms dans la liste des tâches. La valeur par défaut est false.

rebase.rescheduleFailedExec

Commande utilisée pour reprogrammer exec et les commandes qui ont échoué.

rebase.forkPoint

Il s’agit également d’un booléen qui, s’il prend la valeur false, définit l’option -point de non-retour par défaut.

éditeur.de.séquence

Enfin, nous avons le éditeur.de.séquencece qui nous permet d’éditer le fichier rebase via la fonction git rebase -ique nous avons vu ci-dessus.

Il est important de connaître les options qu’un outil ou une technologie nous offre, car souvent, dans l’urgence de la vie quotidienne, nous sommes dans le en mode robot et se contentent d’exécuter des fonctions sans les comprendre.

Comme nous l’avons vu ici, git rebase est une commande git plus avancée qui présente certains risques et avantages, étant important de se former avant de l’utiliser, car sa mauvaise utilisation peut aboutir à une branche.

Si vous avez aimé ce contenu, n’oubliez pas de consulter la rubrique Qu’est-ce que git et sa différence avec GitHub.