Simyl
simylflow
Accueil du cours
Module 2 : Contrôle de source et fondamentaux de Git
Leçon 1 sur 5
10 min

Ce que le contrôle de version résout réellement

Au-delà des « points de sauvegarde pour le code ».

1Voyage dans le temps et récupération

Chaque base de code connaît un moment où quelqu'un supprime le mauvais fichier, brise une fonctionnalité qui marchait, ou déploie un changement qui n'aurait pas dû sortir. Sans contrôle de version, la récupération signifie espérer que quelqu'un ait une copie récente sur son portable. Avec Git, la récupération est une commande.

git log vous montre chaque état dans lequel votre base de code a été — qui a changé quoi, quand et pourquoi. git diff vous permet de comparer deux points quelconques de l'historique pour voir exactement ce qui a changé. git checkout (ou git restore) vous permet de récupérer un fichier — ou un répertoire entier — de n'importe quel commit antérieur. Ce ne sont pas des outils d'urgence que vous apprenez quand les choses se brisent. Ce sont des outils quotidiens qui vous rendent plus rapide : comparer l'approche d'hier à celle d'aujourd'hui, confirmer ce qui a changé entre deux déploiements, récupérer une fonction que vous avez supprimée la semaine dernière.

Les équipes qui traitent Git comme « juste sauvegarder mon code » laissent les fonctionnalités les plus puissantes inutilisées. Le voyage dans le temps n'est pas une métaphore — c'est une capacité littérale. Chaque commit est un instantané que vous pouvez revisiter, comparer ou restaurer. La seule exigence est de committer assez souvent pour avoir des instantanés utiles.

2Travail parallèle sans se marcher dessus

Deux développeurs qui modifient le même fichier en même temps, c'est le plus vieux problème du travail logiciel collaboratif. Avant le contrôle de version, les équipes utilisaient des verrous de fichiers (« Je modifie config.ts, n'y touche pas »), planifiaient des fenêtres d'édition, ou espéraient simplement que tout se passe bien. Les trois approches s'effondrent à grande échelle.

Git résout cela avec les branches. Une branche est une copie isolée de la base de code où vous pouvez faire des changements sans affecter le travail de quelqu'un d'autre. Vous écrivez votre fonctionnalité, votre coéquipier écrit la sienne, et aucun de vous ne voit le code à moitié terminé de l'autre jusqu'à ce que vous soyez tous les deux prêts. La fusion est le point d'intégration — le moment délibéré où deux flux de travail se combinent et où les conflits émergent.

Ce n'est pas seulement une question d'éviter les fichiers écrasés. Les branches vous donnent la permission d'expérimenter. Vous pouvez essayer une refonte risquée, décider qu'elle est mauvaise et supprimer la branche — aucun dommage, aucun retour en arrière nécessaire, aucun bruit de commit dans l'historique partagé. Le coût d'une expérience ratée tombe à presque zéro, ce qui signifie que les développeurs essaient plus de choses. Les équipes qui utilisent bien les branches livrent plus vite parce qu'elles explorent plus d'options avant de s'engager dans une.

3Piste d'audit et responsabilité

Git est un journal d'audit complet de qui a changé quoi, quand et — si les commits sont bien écrits — pourquoi. Chaque ligne de code dans votre base de code a un auteur, un horodatage et un message de commit attaché via git blame. Ce n'est pas de la surveillance ; c'est du contexte.

Quand vous trouvez un morceau de code déroutant, git blame vous dit qui l'a écrit et quand. Le message de commit associé vous dit pourquoi. La PR associée (si votre équipe les utilise) vous donne la discussion complète qui a mené à cette décision. C'est la différence entre « Je n'ai aucune idée pourquoi c'est là » et « Oh, Sarah a ajouté ça en mars pour gérer le cas limite où l'API retourne null — voici le ticket. »

La piste d'audit rend aussi chaque changement réversible. Un mauvais déploiement n'est pas une crise — c'est à un git revert de la récupération. Un fichier supprimé n'est pas perdu — il existe dans chaque commit avant la suppression. La combinaison d'attribution et de réversibilité donne aux équipes la confiance pour avancer vite. Vous pouvez livrer quotidiennement parce que revenir en arrière est peu coûteux, et vous pouvez revenir en arrière précisément parce que vous savez exactement ce qui a changé.

Git est une machine à voyager dans le temps, pas une sauvegarde

Le but n'est pas de sauvegarder votre code — Dropbox fait ça. Le but est de naviguer dans chaque état dans lequel votre code a été, et de fusionner ces états intentionnellement.

Points clés
  • Le contrôle de version vous donne le voyage dans le temps + le parallélisme + l'audit, pas juste la sauvegarde
  • « Juste sauvegarder le fichier » n'est pas un substitut
  • Chaque base de code a besoin de Git dès le premier jour, même les projets solo
Pièges courants à éviter
  • Traiter Git comme une sauvegarde ; c'est bien plus que ça
  • Committer seulement à la fin d'une fonctionnalité (« gros commit »)

Exercices pratiques