Rebaser la branche locale lors de l'extraction des modifications de la branche du référentiel distant dans Git

Azhar Bashir Khan 6 février 2022
Rebaser la branche locale lors de l'extraction des modifications de la branche du référentiel distant dans Git

Ce didacticiel présentera le changement de base de la branche locale lors de l’extraction des modifications de la branche du référentiel distant dans Git.

Nous utilisons Git, un système de contrôle de version, pour suivre les modifications apportées aux fichiers. Nous validons les modifications dans la branche locale du référentiel local. Cette branche locale est associée à une branche distante du référentiel distant.

De temps en temps, nous synchronisons les modifications du dépôt distant avec celles présentes dans notre dépôt local. Nous récupérons les modifications de la branche distante dans la branche locale.

Lorsque nous récupérons les modifications de la branche distante, nous pouvons rebaser la branche locale (c’est-à-dire) pour réappliquer les modifications non publiées en plus des modifications publiées.

Nous allons maintenant illustrer cela par un exemple.

Utilisation de git pull --rebase pour rebaser la branche locale lors de l’extraction à partir de la branche du référentiel distant dans Git

Dans un environnement de développement collaboratif, nous créons des branches dans le référentiel local de notre système local à l’aide de Git. Nous associons cette branche locale à une branche distante dans le référentiel distant.

Nous organisons et validons les modifications apportées aux fichiers dans notre branch locale. Nous publions ensuite ces modifications sur la branche distante du référentiel distant.

Ensuite, d’autres membres de l’équipe, qui travaillent également avec le même référentiel, extraient les modifications publiées dans les branches locales de leurs systèmes.

Ainsi, périodiquement, nous effectuons ce processus consistant à pousser les modifications locales vers le référentiel distant et à extraire les modifications publiées du référentiel distant.

Lors de l’extraction des modifications publiées de la branche distante dans notre branche locale, nous avons la possibilité de faire une fusion ou de faire un rebase.

En cas de merge, on utilise la commande git pull --merge, l’option par défaut. Lorsque nous extrayons les modifications du référentiel distant dans le cas de fusion, les modifications locales sont fusionnées avec les modifications distantes.

Un commit de fusion est créé pour pointer vers les derniers commits locaux et distants.

Dans le cas d’un rebase, on utilise la commande git pull --rebase. Dans un rebase, les modifications locales non publiées de la branche locale sont réappliquées en plus des modifications publiées du référentiel distant.

Aucun nouveau commit n’est créé dans le cas de rebase.

Supposons que nous ayons une branche nommée feature dans le référentiel local associée à une branche distante portant le même nom dans le référentiel distant.

Chaque développeur de l’équipe aurait la branche locale feature dans son système local.

Supposons qu’un développeur ait commité quelques modifications sur la feature de la branche locale.

Supposons maintenant que d’autres développeurs aient publié des modifications de la feature de la branche distante du référentiel distant.

Ainsi, la situation des branches ressemble maintenant à l’illustration ci-dessous.

              P---Q---R feature (local branch)
             /
A---B---C---D---E---G feature (remote branch)

Comme le montre l’illustration ci-dessus, nous avons maintenant un historique fourchu. Nous devons extraire les modifications de la branche distante dans la branche locale pour obtenir les modifications publiées.

Supposons que les nouveaux commits de la feature de la branche distante soient pertinents pour ceux de la branche locale (ce qui est généralement le cas). Ainsi, nous ferions un rebase au lieu d’une fusion lors d’un pull dans ce cas.

Nous devons exécuter la commande git pull avec l’option --rebase pour effectuer un rebase. La syntaxe de la commande est git pull --rebase <remote-repository> <remote-branch-name>.

Ainsi, dans notre cas, pour rebaser notre branche locale feature, nous procéderions comme suit.

$ git pull --rebase origin feature

Ainsi, après avoir exécuté la commande git pull ci-dessus, les branches se présentent comme indiqué dans l’illustration ci-dessous.

                      P---Q---R feature (local branch)
                     /
A---B---C---D---E---G feature (remote branch)

Ainsi, comme le montre l’illustration, tous les commits non publiés de la branche locale feature sont déplacés sur la pointe des changements de feature de la branche distante. Un nouveau commit n’est pas créé.

Le principal avantage de l’option de rebase est que l’historique du projet est beaucoup plus propre qu’avec l’option de fusion.

De plus, comme le montre l’illustration ci-dessus, nous obtenons un historique de projet linéaire. Il n’y a pas de fourches présentes. On parcourt facilement l’historique du projet à l’aide de la commande git log.

Ainsi, nous avons expliqué comment rebaser la branche locale lors de l’extraction des modifications du référentiel distant dans Git.

Pour plus d’informations, s’il vous plaît visitez -

  1. git-pull
  2. Fusionner ou rebaser

Article connexe - Git Pull

Article connexe - Git Rebase