Le principal atout de Git est son système de branches. C’est sur ces branches que repose toute la magie de Git !
Sous Git, la branche principale est appelée la branche main, ou master pour les dépôts créés avant octobre 2020.
La branche principale (main ou master) portera l’intégralité des modifications effectuées. Le but n’est donc pas de réaliser les modifications directement sur cette branche, mais de les réaliser sur d’autres branches, et après divers tests, de les intégrer sur la branche principale.
Vous avez l’impression que c’est du charabia ? Je vous comprends tout à fait !
Il faut voir les branches comme autant de dossiers différents. Prenons un exemple concret.
Imaginez que vous ayez réalisé une superbe application bancaire pour M. Robert, et que ce dernier ait une superbe idée de cagnotte à ajouter à son application.
Panique à bord dans votre tête ! Votre application fonctionne parfaitement, elle est en production, et y toucher serait prendre le risque de tout faire planter.
Avec Git et ses fameuses branches, pas de soucis. Vous pouvez créer une branche correspondant à l’évolution “cagnotte”, et cela sans toucher à votre application en cours de production.
Une fois que toutes vos modifications auront été testées, vous pourrez les envoyer en production sans crainte en les intégrant à la branche main (et dans le pire des cas, revenir en arrière simplement) !
On dit qu’un bon développeur est toujours fainéant ! En fait, un bon développeur trouvera toujours une technique simple pour faire le travail à sa place. Eh bien, Git est l’outil idéal dans ce cas. Il va créer une branche virtuelle, mémoriser tous vos changements, et seulement quand vous le souhaitez, les ajouter à votre application principale. Il va vérifier s'il n’y a pas de conflits avec d’autres fusions, et hop, le tour est joué !
Je vous propose un petit aperçu dans la vidéo ci-dessous :
Pour connaître les branches présentes dans notre projet, il faut taper la ligne de commande :
git branch
Dans un premier temps, vous n’aurez que :
git branch * main
Et c’est normal. L’étoile signifie que c’est la branche sur laquelle vous vous situez, et que c’est sur celle-ci qu'actuellement vous réalisez vos modifications.
Entre nous, il est souvent préférable de créer une branche pour une modification. La création prend 30 secondes et vous économise beaucoup de temps de galère si vous faites des bêtises sur votre branche principale.
Mais revenons au projet de M. Robert !
Nous avons donc notre branche main, et nous souhaitons maintenant réaliser la fonctionnalité Cagnotte. Pour cela, on tape :
git branch cagnotte
Cette commande va créer la branche Cagnotte en local. Cette dernière ne sera pas dupliquée sur le dépôt distant.
Vous pouvez de nouveau taper la ligne de commande :
git branch * main cagnotte
Vous pouvez maintenant voir votre branche principale (main) et votre branche cagnotte. Comme vous pouvez le voir, la petite étoile est toujours sur la branche main. Nous avons créé la branche Cagnotte, mais nous n’avons pas encore basculé sur celle-ci.
Pour basculer de branche, nous allons utiliser :
git checkout cagnotte
Vous aurez donc :
git branch main * cagnotte
La branche va fonctionner comme un dossier virtuel. Avec git checkout, on va être téléporté dans le dossier virtuel Cagnotte. On reste dans le dossier OC physiquement, mais virtuellement nous sommes passés dans un monde parallèle !
Vous pouvez désormais réaliser votre évolution sans toucher à la branche main qui abrite votre code principal fonctionnel. Vous pouvez re-basculer si besoin à tout moment sur la branche main, sans impacter les modifications de la branche Cagnotte.
Réalisez un commit
Vous avez réalisé des évolutions sur la branche Cagnotte, il faut maintenant demander à Git de les enregistrer, de créer une nouvelle version du projet comprenant les évolutions réalisées sur la branche Cagnotte.
Vous devez créer un "commit" grâce à la commande :
git commit -m ‘Réalisation de la partie cagnotte côté front end’
Vos modifications sont maintenant enregistrées avec la description “Réalisation de la partie cagnotte côté front end”.
Félicitations ! Vous venez d’être couronné roi du commit ! "
Réalisez un push
Avec la commande git commit, nous avons enregistré des modifications en local, uniquement. Il ne vous reste plus qu’à envoyer les modifications réalisées sur le dépôt distant grâce à la commande git push que nous avons pu voir dans le chapitre précédent.
Fusionnez votre travail avec la commande git merge
Voilà plusieurs jours que vous travaillez sur l'évolution "cagnotte" de l'application. Après de nombreux commits et pushs, le travail semble terminé. Vous effectuez donc une série de tests pour vérifier le bon fonctionnement de l'évolution “cagnotte”, et bravo à vous, tout est fonctionnel !
À présent, il faut intégrer l'évolution réalisée dans la branche "cagnotte" à la branche principale "main". Pour cela, vous devez utiliser la commande "git merge".
Cette commande doit s'utiliser à partir de la branche dans laquelle nous voulons apporter les évolutions. Dans notre cas, la commande s’effectuera donc dans la branche main. Pour y retourner, utilisez la commande :
git checkout main Switched to branch 'main'
Maintenant que vous êtes dans votre branche principale, vous pouvez fusionner votre branche "cagnotte" à celle-ci grâce à la commande suivante :
git merge cagnotte Merge made by the 'recursive' strategy
En résumé
Une branche est une “copie” d’un projet sur laquelle on opère des modifications de code.
La branche main (ou anciennement master) est la branche principale d’un projet.
git checkout permet de basculer d’une branche à une autre.
git merge permet de fusionner deux branches.
Il est temps de rassembler et mélanger toutes vos connaissances ! Suivez-moi dans le prochain chapitre où nous allons travailler avec un dépôt existant !