Développement & Programmation5 min de lecture

Git, c'est quoi ? Le versioning expliqué simplement

Git c'est quoi, au juste ? Le versioning expliqué sans jargon : ce que fait Git, sa différence avec GitHub, et les commandes du quotidien.

Par Jean Weber

Graphe de commits Git avec une branche secondaire qui diverge de la ligne principale puis la rejoint
Sommaire

Vous avez sûrement déjà eu ce dossier : rapport_final, rapport_final_v2, rapport_final_ok_cette_fois. Git existe pour supprimer ce dossier. Voilà ce qu'il fait vraiment, sans trois heures de tutoriel.

Git, c'est quoi exactement ?

Git est un logiciel de gestion de versions : il enregistre l'historique complet des modifications d'un projet et permet de revenir à n'importe quel état antérieur, fichier par fichier, ligne par ligne. Linus Torvalds et la communauté du noyau Linux l'ont écrit en 2005, quand l'outil qu'ils utilisaient jusque-là (BitKeeper) a cessé d'être gratuit pour eux. Le cahier des charges tenait en quelques points : de la vitesse, un fonctionnement entièrement distribué, des milliers de branches en parallèle et de quoi encaisser un projet de la taille du noyau Linux.

Distribué, ça veut dire que chaque copie du projet embarque l'historique entier sur votre disque. Pas besoin de réseau pour relire un enregistrement d'il y a trois ans, ouvrir une branche ou revenir en arrière : tout est local. Le serveur distant ne sert qu'à se synchroniser avec les autres.

Git et GitHub, ce n'est pas la même chose

Git est le programme installé sur votre machine, GitHub est un site qui héberge des dépôts Git. On croise les deux mots collés l'un à l'autre, mais l'un tourne très bien sans l'autre. GitHub, GitLab ou Bitbucket stockent une copie du dépôt sur un serveur et ajoutent ce que Git ne fait pas : interface web, gestion des droits, revue de code, tickets, tests automatiques.

Rien ne vous oblige à passer par eux : un dépôt sur votre disque dur, ou sur un serveur que vous louez, fonctionne pareil. Git est un logiciel libre distribué sous licence GNU GPL version 2.0, gratuit. Ce sont les hébergeurs qui facturent des options d'équipe.

Comment Git enregistre votre travail

Git travaille avec trois zones. Le répertoire de travail, ce sont vos fichiers tels que vous les éditez. L'index (ou zone de préparation) liste ce qui partira dans le prochain enregistrement. Le dépôt local garde l'historique validé. Un fichier passe donc par trois états : modifié, indexé, puis validé.

Cet enregistrement s'appelle un commit : un instantané du projet à un moment donné, avec un auteur, une date et un message. L'étape d'indexation existe pour que vous choisissiez ce qui entre dans chaque commit : si vous avez corrigé deux choses sans rapport, vous pouvez n'en valider qu'une. Et un bon message décrit le changement (« corrige le calcul de TVA sur les remises ») plutôt que le geste (« update »). C'est vous qui le relirez dans six mois.

Les commandes qu'on tape vraiment tous les jours

Une dizaine de commandes couvrent l'essentiel du quotidien :

  • git init pour créer un dépôt, ou git clone <url> pour récupérer un dépôt existant
  • git status : où j'en suis, quels fichiers ont bougé
  • git add <fichier> : je place ce fichier dans l'index
  • git commit -m "message" : je valide
  • git log --oneline : je relis l'historique
  • git push et git pull : j'envoie vers le dépôt distant, je récupère ce que les autres ont poussé
  • git switch -c <nom> : je crée une branche et je bascule dessus

La branche est la notion qui déroute au début et qui rend le plus service ensuite. C'est une ligne de travail parallèle : vous développez une fonctionnalité de votre côté, la ligne principale reste stable, et vous fusionnez quand ça marche. C'est ce qui permet à cinq personnes de travailler sur la même base sans s'écraser mutuellement.

Git se moque du langage : il versionne du Rust comme du TypeScript, un fichier de configuration, un site statique ou une documentation en markdown. Comme savoir ce qu'est une API, c'est du vocabulaire de base : autant l'avoir compris une bonne fois.

FAQ

Faut-il savoir coder pour utiliser Git ?

Non. Tout fichier texte se versionne : documentation, fichiers de configuration, notes. La limite est ailleurs : sur un binaire (Word, PSD, vidéo), Git garde bien chaque version mais ne sait pas vous montrer ce qui a changé ligne à ligne.

Que se passe-t-il si je supprime un fichier par erreur ?

S'il a été commité au moins une fois, il est récupérable : l'historique local contient chacune de ses versions. Ce qui n'a jamais été commité, en revanche, n'existe pas pour Git.

Git ou GitHub pour débuter ?

Git d'abord, sur un dossier à vous : init, add, commit, log. Le dépôt distant prend son intérêt une fois ce cycle assimilé, ou dès qu'un deuxième contributeur arrive.

Sources

À lire aussi