Assurance qualité
Logicielle

Utilisation des branches avec un serveur Git

Pourquoi brancher sur le serveur

De ce qu'on a fait jusqu'à présent, les branches existaient uniquement en local sur notre ordinateur. Il est toutefois possible de lier nos branches locales à des branches sur le serveur Git. C'est d'ailleurs ce qui est déjà fait pour votre branche principale main. Nous pouvons toutefois le faire aussi pour d'autres branches.

À première vue, il peut sembler inutile de créer des branches sur un serveur Git. Après tout, utiliser des branches en local semble suffisant pour développer des fonctionnalités séparément. Il y a toutefois plusieurs avantage à connecter les branches locales à des branches sur un serveur Git. En voici quelques-uns:

  • Partager nos fonctionnalités en développement avec l'équipe. Si votre code est sur une branche du serveur Git, les autres membres de l'équipe pourront facilement y accéder.
  • Garder une copie de nos branches en sécurité. Si votre ordinateur tombe en panne, vous aurez toujours une copie de vos branches sur le serveur.
  • Faciliter la fusion des branches. Si vous avez terminé une fonctionnalité, vous pourrez plus facilement la fusionner avec la branche principale.
  • Faciliter la revue de code. Les membres de l'équipe pourront facilement voir vos modifications et vous donner des commentaires.

Mettre une branche sur le serveur

Si vous avez clôner un répertoire Git ou que vous avez ajouter un remote, vous êtes connecté au serveur Git. Toitefois, bien que la branche principale soit sur le serveur, vos branches locales ne le sont pas nécessairement. Pour qu'une branche secondaire soit disponible sur le serveur, nous utilisons la commande git push, comme pour la branche principale. Nous devrons toutefois spécifier la branche à pousser.

Terminal

Dans le commande ci-dessus, vous devez remplacer nom-de-branche par le nom de la branche sur laquelle vous travaillez en local et que vous voulez mettre sur le serveur.

Si un autre membre de l'équipe veut travailler sur votre branche et qu'il a déjà accès au projet, il pourra la récupérer du serveur avec la commande git fetch et ensuite changer de branche avec la commande git checkout.

Terminal

Si la branche n'est pas à jour avec celle sur le serveur, vous pouvez toujours faire un git pull pour récupérer les dernières modifications. Attention, si vous avez fait des modifications qui ne sont pas commité sur votre branche, le pull ne fonctionnera pas.

Terminal

Encore une fois, vous devez remplacer nom-de-branche par le nom de la branche que vous voulez récupérer.

Fusionner avec la branche principale

Lorsque vous avez terminé de développer une fonctionnalité sur une branche, vous devrez l'ajouter à la branche principale par le biais d'une fusion. La première étape est de mettre à jour votre branche avec les dernières modifications de la branche principale. En effet, entre le moment où vous avez commencé à développer votre fonctionnalité et le moment où vous la fusionnerez, il est possible que d'autres modifications aient été ajoutées à la branche par d'autres membres de l'équipe.

Branche non à jour avec main

Comme vous pouvez le voir dans l'image ci-dessus, votre branche n'est plus à jour avec la branche principale puisqu'un de vos collègues a ajouté des modifications. La fusion de votre branche directement dans la branche principale ne peut donc pas se faire directement puisque Git ne peut pas garantir qu'il n'y aura pas de conflits.

Pour mettre à jour votre branche, vous pouvez simplement utiliser la commande git pull pour amener les modifications de la branche principale dans votre branche. Assurez-vous d'être dans votre branche avant de faire le pull pour que le celui-ci s'éffectue au bon endroit.

Terminal

Vous noterez qu'on fait un commit ainsi qu'un push après le pull. C'est pour ajouter les résultats de la fusion au versionnage et sur le serveur Git.

Une fois les modifications de la branche principale dans votre branche, vous pouvez fusionner votre branche dans la branche principale à l'aide de la commande git pull de façon similaire à ce que nous avons fait juste avant. Vous devrez commencer par changer de branche pour la branche principale et ensuite faire un pull pour amener les modifications de votre branche. Puisque votre branche intègre déjà les modifications de la branche principale, la fusion se fera sans problème.

Terminal

Gestion de conflits

Lorsque que l'on regarde les étapes pour fusionner une branche dans la branche principale, on peut se demander pourquoi on ne fait pas directement la fusion dans le main. Pourquoi faisons-nous cette fusion intermédiaire? La raison est simple: les conflits. Lorsque le code de deux branches est modifié au même endroit, Git ne peut pas savoir quelle version garder. Il entrera alors en mode de gestion de conflits. Git vous indiquera les fichiers ainsi que les lignes qui posent problème. Vous devrez résoudre ces conflits manuellement un par un.

Lorsqu'un conflit survient, Git vous indiquera les fichiers en conflit dans le terminal. Si vous ouvrez ces fichiers dans un éditeur de texte, vous verrez des marqueurs de conflits <<<<<<<, ======= et >>>>>>>.

C#

La section entre <<<<<<< et ======= est le code de votre branche. La section entre ======= et >>>>>>> est le code de la branche que vous fusionnez, généralement la branche principale. Vous devrez choisir quelle version garder ou encore complètement changer le code pour résoudre le conflit. Pour que Git sache que le conflit est résolu, vous devrez retirer les marqueurs de conflits et faire un commit.

Assurez-vous de bien comprendre le conflit et de bien tester votre code après sa résolution. Une fois que le code est testé et fonctionnel, vous pourrez continuer la fusion de votre branche. Dans la branche principale.

Il peut être intimidant de gérer les conflits lorsqu'on n'est pas habitué. Heureusement, les éditeurs de code modernes possèdent des outils pour vous aider à résoudre les conflits. Ils vous permetteront de voir les différences entre les deux versions et de choisir laquelle garder à l'aide d'un simple clic de souris. N'hésitez pas à utiliser ces outils pour vous aider.