Les branches
Utiliser les branches
🚧
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 :
- créer une branche nommée “refonte”
- Développer, Commiter sur cette branche
- Si à la fin ce que vous avez fait sur cette branche vous plait alors fusion de cette branche avec la branche principale main
- 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
etmain
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 branchetrottinette
. Si par la suite vous utilisez GitHub ou GitHub cette option se retrouve directement dans les merge ou les pull requests.
- On retourne sur la branche