Découvrez la magie du contrôle de versions
Dans ce cours, je vais vous présenter l’outil indispensable à tout bon développeur : le gestionnaire de versions.
Imaginez, vous avez passé une semaine à écrire votre code, et donc produit votre première version, la V1. Votre collègue vous a fait des suggestions pour l’améliorer. Vous allez donc créer une deuxième version de votre code, la V2. Pour garder un historique de votre travail et éviter les mauvaises surprises (bugs, perte de votre travail), vous aurez besoin d’un gestionnaire de versions.

Qu’est-ce qu’un gestionnaire de versions ?
Alors, qu’est-ce qu’un gestionnaire de versions ?
Un gestionnaire de versions est un programme qui permet aux développeurs de conserver un historique des modifications et des versions de tous leurs fichiers.
L’action de contrôler les versions est aussi appelée « versioning » en anglais, vous pourrez entendre les deux termes.
Le gestionnaire de versions permet de garder en mémoire :
- chaque modification de chaque fichier ;
- pourquoi elle a eu lieu ;
- et par qui !
Si vous travaillez seul, vous pourrez garder l’historique de vos modifications ou revenir à une version précédente facilement.
Si vous travaillez en équipe, plus besoin de mener votre enquête ! Le gestionnaire de versions fusionne les modifications des personnes qui travaillent simultanément sur un même fichier. Grâce à ça, vous ne risquez plus de voir votre travail supprimé par erreur !
Cet outil a donc trois grandes fonctionnalités :
- Revenir à une version précédente de votre code en cas de problème.
- Suivre l’évolution de votre code étape par étape.
- Travailler à plusieurs sans risquer de supprimer les modifications des autres collaborateurs.
Dans ce cours, vous allez apprendre à utiliser le gestionnaire de versions Git.
Git est de loin le système de contrôle de versions le plus largement utilisé aujourd’hui.
C’est un programme qui a une structure décentralisée.
Qu’est-ce que cela veut dire ?
Avec Git, l’historique complet du code n’est pas conservé dans un unique emplacement. Chaque copie du code effectué correspond à un nouveau dépôt dans lequel est conservé l’historique des modifications.
La maîtrise de Git est très souvent demandée lors d’un recrutement, c’est pourquoi il est essentiel de le maîtriser. 
Pourquoi est-ce utile dans le travail d’équipe ?
Prenons un exemple concret ! Alice et Bob travaillent sur le même projet depuis un mois. Tout se déroulait à merveille jusqu’à hier : le client leur a demandé de livrer leur projet en urgence. Alice a réalisé en vitesse les dernières modifications, enregistré les fichiers et envoyé le tout au client.
Le lendemain, le client appelle, très énervé : rien ne fonctionne. Alice et Bob ne comprennent pas. Ils s’étaient pourtant bien réparti les tâches et tous les deux avaient fait correctement leur travail.
Le problème ? Sans s’en rendre compte, Alice a écrasé le code de Bob en effectuant ses modifications. Bob n’a pas copié son travail en local, il a donc codé pendant un mois pour rien car il lui est impossible de récupérer son travail.
« En local » signifie sur votre machine, par opposition à « en ligne ».
Tout cela aurait pu être évité avec le gestionnaire de versions !
Si Alice et Bob avaient initialisé Git pour leur projet, ils auraient pu modifier leurs fichiers, envoyer et recevoir les mises à jour à tout moment, sans risque d’écraser les modifications de l’autre. Les modifications de dernière minute n’auraient donc pas eu d’impact sur la production finale !

Git ou GitHub ? Quelle est la différence ?
Git et GitHub sont deux choses différentes.
Git est un gestionnaire de versions. Vous l’utiliserez pour créer un dépôt local et gérer les versions de vos fichiers.
GitHub est un service en ligne qui va héberger votre dépôt. Dans ce cas, on parle de dépôt distant puisqu’il n’est pas stocké sur votre machine.
C’est un peu confus ? Pas de panique, prenons un exemple pour illustrer cela.
Imaginez, vous participez à la préparation d’un parfum. Chez vous, vous créez la base du parfum en mélangeant différents ingrédients. Puis vous envoyez cette base dans un entrepôt où il sera stocké. Cette base de parfum pourra être distribuée telle quelle ou être modifiée en y ajoutant d’autres ingrédients.
Eh bien, c’est la même chose pour Git et GitHub. Git est la préparation que vous avez réalisée chez vous, et GitHub est l’entrepôt où elle peut être modifiée par les autres ou distribuée.

En résumé
- Un gestionnaire de versions permet aux développeurs de conserver un historique des modifications et des versions de tous leurs fichiers.
- Git est un gestionnaire de versions tandis que GitHub est un service en ligne qui héberge les dépôts Git. On parle alors de dépôt distant.
