La gestion de version enregistre chaque état d'un ensemble de fichiers, avec son auteur, sa date et sa raison, et permet d'y revenir à tout moment. Cette leçon s'adresse à tous, y compris à celles et ceux qui ne se voient pas comme développeurs : un administrateur système qui maintient des scripts, une équipe d'exploitation qui fait évoluer des configurations. Vous y verrez ce qu'on attend aujourd'hui d'un outil de gestion de version, quel que soit son nom : la traçabilité, le retour arrière, le travail à plusieurs sans écrasement, et un historique dont l'altération se voit. Vous saurez aussi ce qu'il ne fait pas, et ce qu'il faut lui ajouter pour qu'il vaille preuve lors d'un audit. L'histoire des outils et le fonctionnement interne de Git ont chacun leur leçon dans ce module, citée à l'endroit où elle sert.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Définir la gestion de version sans la réduire à un outil précis
- Reconnaître les situations d'exploitation où l'absence d'historique coûte cher
- Expliquer les quatre garanties d'un outil de gestion de version
- Employer le vocabulaire commun à tous les outils
- Distinguer ce que la gestion de version ne remplace pas
Qu'est-ce que la gestion de version ?
Section intitulée « Qu'est-ce que la gestion de version ? »La gestion de version est une méthode, outillée, qui conserve l'historique complet d'un ensemble de fichiers. Chaque modification enregistrée devient une révision : un état figé du projet, accompagné du nom de son auteur, d'une date et d'un message qui explique le changement. L'ensemble des révisions forme un historique que l'on peut parcourir, comparer et restaurer. Le terme anglais est version control, et l'outil s'appelle un VCS (Version Control System). Ce n'est pas une simple sauvegarde : une sauvegarde conserve des copies, la gestion de version conserve des copies reliées entre elles, avec la raison de chaque écart. C'est cette chaîne qui permet de répondre à « qu'est-ce qui a changé entre mardi et jeudi, et pourquoi ? » en une commande, au lieu de comparer des dossiers à la main.
La gestion de version s'applique à tout fichier texte qui évolue : du code applicatif, mais aussi des scripts shell, des fichiers de configuration, des playbooks, de la documentation ou des définitions d'infrastructure as code, c'est-à-dire des serveurs et réseaux décrits dans des fichiers texte plutôt que configurés à la main. C'est pour cela qu'elle concerne autant l'exploitation que le développement.
Pourquoi versionner quand on n'est pas développeur ?
Section intitulée « Pourquoi versionner quand on n'est pas développeur ? »Parce que les incidents d'exploitation naissent le plus souvent d'une
modification, et que sans historique personne ne sait laquelle. Prenons un
cas réaliste : un serveur web tombe à 3 h du matin après une intervention sur
nginx.conf. Sans gestion de version, l'équipe d'astreinte trouve
nginx.conf, nginx.conf.bak et nginx.conf.old2, sans savoir lequel
fonctionnait ni qui a modifié quoi. Avec un dépôt, elle affiche la
différence entre la version de la veille et celle du jour, identifie la
ligne fautive et restaure l'état précédent en quelques minutes.
Le tableau suivant met en regard les situations les plus courantes. Lisez-le comme une liste de coûts cachés : chaque ligne de gauche est un temps perdu, souvent en pleine crise, que la colonne de droite fait disparaître.
| Sans gestion de version | Avec gestion de version |
|---|---|
Copies fichier.bak, fichier.old, fichier-final-v2 | Un seul fichier, et tout son historique dans le dépôt |
| « Qui a changé ce paramètre ? » reste sans réponse | Chaque révision porte un auteur, une date et un message |
| Revenir en arrière, c'est retrouver la bonne copie | Restaurer une révision connue en une commande |
| Deux personnes modifient le même script, la dernière écrase l'autre | Les modifications parallèles sont fusionnées, les conflits signalés |
| L'auditeur demande ce qui a changé, et quand | L'historique fournit le contenu exact, avec l'auteur et la date déclarés |
Cette logique est le socle des pratiques modernes d'exploitation. L'infrastructure as code et le GitOps reposent entièrement sur elle : l'état voulu de l'infrastructure vit dans un dépôt, et toute modification passe par une révision tracée. Vous les retrouverez dans les guides Provisionnement et GitOps.
Que garantit un outil de gestion de version ?
Section intitulée « Que garantit un outil de gestion de version ? »On attend aujourd'hui d'un outil de gestion de version quatre garanties : traçabilité, réversibilité, travail en parallèle et intégrité de l'historique. Elles ne sont pas nées ensemble : elles se sont construites génération après génération. Les premiers outils, installés sur un seul poste, ne permettaient pas de travailler à plusieurs, et l'intégrité vérifiable par empreintes chaînées n'est arrivée qu'avec les outils récents. La leçon Historique du contrôle de version raconte cette construction. Connaître les quatre garanties permet de juger un outil, ou une façon de s'en servir, sur ce qui compte vraiment.
Traçabilité : qui a modifié quoi, quand et pourquoi
Section intitulée « Traçabilité : qui a modifié quoi, quand et pourquoi »La traçabilité relie chaque modification à son auteur, à sa date et à sa raison. Elle repose sur le message qui accompagne chaque révision : un message vague comme « correction » ne trace rien, un message précis comme « augmenter le délai d'attente du proxy à 60 s pour l'export nocturne » répond à la question avant qu'on la pose. Relier ce message à un ticket (incident, demande de changement) complète la chaîne : depuis l'historique, on remonte à la demande d'origine, et depuis le ticket, on retrouve la modification exacte. C'est ce lien qui transforme l'historique en journal d'exploitation.
Réversibilité : revenir à un état connu
Section intitulée « Réversibilité : revenir à un état connu »La réversibilité permet de restaurer n'importe quelle révision enregistrée, un fichier isolé comme le projet entier. Elle ne vaut que pour ce qui a été enregistré : un travail jamais confié à l'outil n'a pas d'historique. D'où la première bonne habitude : enregistrer souvent, par petites étapes cohérentes, pour que chaque retour arrière tombe sur un état stable et non au milieu d'une modification à moitié faite. Les gestes précis de retour arrière dans Git sont traités dans la leçon Annuler des modifications.
Travail en parallèle : collaborer sans s'écraser
Section intitulée « Travail en parallèle : collaborer sans s'écraser »Plusieurs personnes peuvent modifier les mêmes fichiers en même temps, puis réunir leurs travaux. L'outil isole chaque travail en cours sur une branche, une ligne de développement parallèle, puis le réintègre par une fusion. Quand deux modifications touchent les mêmes lignes, il ne choisit pas à votre place : il signale un conflit et vous demande de trancher. C'est l'inverse du partage de fichiers classique, où la dernière personne à enregistrer efface silencieusement le travail des autres. Les branches de Git sont présentées dans la leçon Les branches en bref, et les stratégies d'équipe qui les organisent dans Workflows Git.
Intégrité : un historique digne de confiance
Section intitulée « Intégrité : un historique digne de confiance »Un historique n'a de valeur que s'il est impossible de le modifier sans que cela se voie. Les outils récents, Git en tête, identifient chaque révision par une empreinte cryptographique calculée sur son contenu et sur l'empreinte de la révision qui la précède : changer une ligne ancienne change toutes les empreintes qui suivent. Le mécanisme exact, à base de SHA, est expliqué dans la leçon Le modèle par snapshots.
Cette intégrité a une limite qu'il faut connaître avant de parler de preuve. L'auteur et la date d'une révision sont simplement déclarés par la personne qui l'enregistre, et rien ne l'empêche d'écrire un autre nom. Quelqu'un qui réécrit l'historique puis l'envoie au serveur en écrasant l'ancien (un push forcé) obtient un nouvel historique, parfaitement cohérent avec lui-même : seules les copies plus anciennes trahissent la différence.
Pour qu'un historique serve de preuve lors d'un audit de conformité, il faut y ajouter trois éléments : des commits signés, qui lient chaque révision à une identité vérifiable, une branche principale protégée contre la réécriture, et le journal d'audit de la forge (la plateforme qui héberge le dépôt, comme GitHub ou GitLab), qui conserve qui a poussé quoi. La signature est présentée dans le guide GitSign, la protection des branches dans Gouvernance du code source.
Quel vocabulaire est commun à tous les outils ?
Section intitulée « Quel vocabulaire est commun à tous les outils ? »Cinq notions se retrouvent dans tous les systèmes de gestion de version, sous des noms parfois différents. Les maîtriser avant d'apprendre un outil évite de confondre un concept général avec une commande particulière. Le tableau donne le terme courant, son équivalent anglais tel que vous le lirez dans les outils, et ce qu'il désigne.
| Terme | En anglais | Ce qu'il désigne |
|---|---|---|
| Dépôt | repository | L'espace où vivent les fichiers suivis et tout leur historique |
| Révision, ou commit | revision, commit | Un état enregistré du projet, avec auteur, date et message |
| Branche | branch | Une ligne de travail parallèle, isolée de la ligne principale |
| Fusion | merge | L'intégration des changements d'une branche dans une autre |
| Étiquette | tag | Un nom fixe posé sur une révision, souvent un numéro de version livrée |
Git ajoute à ce socle des notions qui lui sont propres, comme la zone d'index, le pointeur HEAD ou le remote. Elles sont définies une à une, avec exemples, dans le Vocabulaire Git, qui sert de dictionnaire de référence pour toute la formation.
Quels outils de gestion de version existe-t-il ?
Section intitulée « Quels outils de gestion de version existe-t-il ? »Git domine aujourd'hui très largement, mais d'autres outils restent en service dans des contextes précis. Ils se distinguent d'abord par leur modèle : un outil centralisé garde l'historique sur un serveur unique, un outil distribué en donne une copie complète à chaque participant. L'évolution de ces modèles, de RCS à Git, et les raisons pour lesquelles Git s'est imposé sont racontées dans la leçon Historique du contrôle de version.
Le tableau suivant aide surtout à reconnaître un outil le jour où vous le croisez dans un projet existant, notamment chez un client ou dans un service qui n'a pas encore migré. Ce n'est pas une grille de choix : pour un projet neuf, Git est le choix par défaut.
| Outil | Modèle | Où on le croise encore |
|---|---|---|
| Git | Distribué | Partout : logiciel libre, entreprises, infrastructure as code |
| Subversion (SVN) | Centralisé | Projets anciens, environnements qui veulent des droits fins par répertoire |
| Mercurial | Distribué | Quelques projets historiques, de plus en plus rares |
| Perforce P4 (ex-Helix Core) | Centralisé | Jeu vidéo et projets à très gros fichiers binaires |
| TFVC (Azure DevOps, ex-TFS) | Centralisé | Environnements Microsoft qui n'ont pas basculé vers Git |
Quelles pratiques donnent sa valeur à l'historique ?
Section intitulée « Quelles pratiques donnent sa valeur à l'historique ? »Un outil de gestion de version ne garantit rien si on s'en sert mal : c'est la discipline d'équipe qui donne sa valeur à l'historique. Les pratiques ci-dessous se regroupent en trois cercles, du geste individuel à la gouvernance. Les deux premiers sont détaillés, côté Git, dans des leçons de la formation ; la gouvernance relève des guides de sécurité cités plus haut.
Au quotidien
Section intitulée « Au quotidien »Enregistrer petit et souvent reste la règle de base : une révision qui mélange trois sujets ne se relit pas et ne s'annule pas proprement. Chaque révision porte un message qui explique le pourquoi, pas seulement le quoi. Avant de modifier, on récupère les changements des autres ; après, on partage les siens sans attendre, pour que les écarts restent petits. L'écriture d'un bon message est enseignée dans Enregistrer des modifications, et sa forme normalisée d'équipe dans Conventional Commits.
En équipe
Section intitulée « En équipe »Aucune modification n'arrive sur la ligne principale sans relecture. La revue de code, souvent organisée par une demande de fusion (pull request ou merge request), fait relire chaque changement par un pair avant son intégration. Des tests automatiques déclenchés à chaque révision vérifient que rien n'est cassé. Fusionner régulièrement dans la ligne principale limite les conflits : plus une branche vit longtemps, plus elle diverge. Ces gestes sont au cœur de la leçon Pull requests et code review.
Gouvernance et sécurité
Section intitulée « Gouvernance et sécurité »Le dépôt devient un actif de l'entreprise, et se gouverne comme tel. Le contrôle des accès décide qui peut lire, proposer ou fusionner ; la protection de la branche principale empêche une modification non relue d'y entrer. Les webhooks, des notifications envoyées à d'autres outils à chaque événement du dépôt, déclenchent pipelines, déploiements ou alertes. Enfin, l'historique complet sert de base aux audits de conformité et aux analyses de sécurité, à condition d'y avoir tracé chaque changement et de l'avoir protégé : commits signés, réécriture interdite sur la branche principale, journal de la forge conservé.
Que ne fait pas la gestion de version ?
Section intitulée « Que ne fait pas la gestion de version ? »La gestion de version n'est ni une sauvegarde complète, ni un coffre à secrets, ni une garantie de qualité. Elle ne conserve que ce qu'on lui confie : les fichiers jamais enregistrés, les bases de données ou les fichiers exclus volontairement restent à sauvegarder par ailleurs. Elle n'oublie rien non plus : un mot de passe enregistré par erreur reste lisible dans l'historique même après sa suppression du fichier.
Le premier geste est donc de le révoquer : changer le mot de passe, invalider la clé ou le jeton. Dès qu'il a été poussé, il a pu être copié par un clone, un fork, un cache ou un journal de CI, et aucune opération sur le dépôt ne l'efface de ces copies. Purger l'historique vient ensuite, si c'est utile, par une réécriture de l'historique décrite dans Nettoyer l'historique et les fichiers : elle évite que le secret continue de circuler, mais ne met pas fin à l'exposition. La bonne réponse reste de ne jamais l'y mettre, comme l'explique le guide Secrets dans le code et Git.
Elle ne juge pas non plus la qualité de ce qu'elle enregistre : une configuration fausse, bien versionnée, reste fausse. La relecture, les tests et les contrôles automatiques restent indispensables ; l'historique sert seulement à savoir, ensuite, d'où vient l'erreur et comment revenir à un état sain.
À retenir
Section intitulée « À retenir »- La gestion de version conserve chaque état d'un ensemble de fichiers, avec son auteur, sa date et sa raison, et permet d'y revenir.
- Elle concerne aussi l'exploitation : scripts, configurations, playbooks et infrastructure as code se versionnent comme du code.
- Un outil apporte quatre garanties : traçabilité, réversibilité, travail en parallèle et intégrité de l'historique.
- Dépôt, révision, branche, fusion et étiquette forment le vocabulaire commun à tous les outils.
- Git domine ; SVN, Mercurial, Perforce et TFVC subsistent dans des contextes précis.
- Un historique ne vaut que par la discipline de l'équipe : petites révisions, messages explicites, relecture, tests.
- Un historique ne vaut preuve qu'avec des commits signés, une branche protégée et le journal de la forge : auteur et date sont déclaratifs.
- Ce n'est ni une sauvegarde complète ni un coffre à secrets : un secret enregistré se révoque d'abord, la purge de l'historique vient ensuite.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Score par domaine
Un domaine regroupe plusieurs guides et reçoit plusieurs questions : son score est plus fiable qu'un score par thème, qui porte souvent sur une seule question.
Bilan
Points forts
Aucun sujet réussi à 80 % sur au moins deux questions pour l’instant.
Points faibles
Aucun sujet sous le seuil de réussite.
À faire ensuite
Des indices pour retenter votre chance ?
Continuer le cours : Enregistrer des modifications avec Git
Continuer le cours : Historique du contrôle de version
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications