Les branches

Utiliser les branches
Author

Ludovic Deneuville

🚧

1 A quoi sert une branche ?

Imaginez vous avez votre code qui fonctionne bien mais qui est tout moche (avec des duplications…). Comme vous êtes sérieux, vous voulez faire tout bien comme il faut et mettre tout au propre.

Vous faites vos corrections, faites de commits, et puis à un moment vous en avez marre car plus rien ne fonctionne. Vous avez envie de retourner en arrière, ce qui est possible avec ce que l’on a vu précédemment mais pas trivial ni très propre.

Si vous connaissiez les branches voici ce que vous auriez fait :

  1. créer une branche nommée “refonte”
  2. Développer, Commiter sur cette branche
  3. Si à la fin ce que vous avez fait sur cette branche vous plait alors fusion de cette branche avec la branche principale main
  4. Sinon vous pouvez simplement supprimer cette branche

En gros une branche permet de coder et/ou tester une nouvelle fonctionnalité sans polluer la branche principale.

2 Un petit exemple pour y voir plus clair

  • imaginons que vous voulez ajouter une classe trottinette, mais vous n’êtes pas encore sûr, alors vous testez sur une branche
  • git switch -c trottinette
    • création d’une branche trottinette
    • Switched to a new branch ‘trottinette’
      • et comme l’indique le message, avec cette commande vous êtes directement positionné sur cette branche
  • Créez un fichier trottinette.py
  • Modifiez la vitesse de voiture à 210 parce que vous êtes un malade
  • add puis commit
  • git push pour partager sur le dépôt distant
    • Git dit que cette branche n’est pas connue sur le dépôt distant
    • Mais comme il est sympa, il donne la commande pour la créer
    • git push --set-upstream origin trottinette
  • Ensuite revenons sur la branche principale main
    • git switch main
  • Modifiez la vitesse maximale de voiture à 90 parce qu’en fait vous êtes très prudent puis commit
  • Maintenant, après mûre réflexion, vous vous dites que la trottinette c’est trop bien et qu’il faut l’intégrer à la branche main
  • Vous avec envie de fusionner directement les branches trottinette et main
    • git merge trottinette
    • Seulement il y a un conflit et c’est fait exprés
    • Il a été dit plus haut que la branche main doit rester le plus propre possible, ainsi on va éviter de la polluer avec des commits de gestion de conflit. Les conflits doivent être réglé sur les autres branches
    • Annulons ce merge
      • git merge --abort
  • Voici comment nous allons procéder pour faire cela proprement
    • On retourne sur la branche trottinette
      • git switch trottinette
    • Nous allons faire la fusion sur cette branche
      • git merge main
      • nous résolvons le conflit puis commit
    • Maintenant que les 2 branches sont synchronisées, retournons sur la branche main
      • git switch main
      • git merge --squash trottinette
        • cette fois-ci pas de conflits car ils ont été résolu juste avant
      • git commit -am "ajout fonctionnalité trottinette"
    • L’option --squash permet de ne pas polluer le main avec tous les commits réalisés sur la branche trottinette. Si par la suite vous utilisez GitHub ou GitHub cette option se retrouve directement dans les merge ou les pull requests.