Qu'est-ce que Git — enregistrer les modifications pour pouvoir revenir en arrière

Cet article fait partie du cours Les bases de l'informatique, qui construit depuis zéro les connaissances informatiques pratiques indispensables pour programmer et faire du vibe coding.
Enregistrer par-dessus ne laisse rien de l'état précédent. Des schémas suivent le parcours qui va de l'enregistrement d'un commit à la récupération d'un point antérieur parmi les enregistrements accumulés dans le dépôt.

Cet article traite de Git.

Git enregistre les modifications des fichiers pour que tu puisses revenir à un état antérieur, et placer ces enregistrements sur un serveur permet de mettre d'autres personnes dans le même état.

Les enregistrements alignés dans les trois emplacements sont les mêmes, et c'est le serveur placé au milieu qui les maintient identiques.

Ce que fait Git — conserver des enregistrements et les partager via un dépôt distant

Le mécanisme qui enregistre les modifications des fichiers point par point pour pouvoir récupérer un état passé s'appelle la gestion de versions (version control).

L'endroit où ces enregistrements sont conservés est le dépôt (repository), la même chose placée côté serveur est le dépôt distant (remote repository), et un enregistrement pris à un instant donné est un commit.

Les services les plus connus pour héberger un dépôt distant sont GitHub et GitLab, et GitHub n'est pas Git lui-même : c'est un endroit où placer un dépôt distant.

Ton ordinateur et le serveur GitHub
Ton ordinateur
Le dossier my-app
Fichiers en cours de travail
  • app.js et style.css
  • Enregistrer par-dessus remplace le contenu
Dépôt
  • Les commits alignés du plus ancien au plus récent
  • git commit en ajoute un
Serveur GitHub
Le dépôt distant de my-app
  • Les commits envoyés avec git push s'alignent ici
  • https://github.com/example/my-app.git est cet endroit
  • Accessible en lecture et en écriture depuis un autre ordinateur
À gauche, ton ordinateur ; à droite, le serveur GitHub. Le dépôt situé dans le dossier my-app et le dépôt distant sur le serveur se trouvent à des endroits différents, et tous les deux contiennent des commits.

Envoyer les enregistrements de ton ordinateur vers le serveur, c'est un push, et récupérer ceux du serveur, c'est un pull.

Comme un serveur se trouve au milieu, le contenu est le même quel que soit le moment où le collègue le récupère.

Les formulations sur Git que tu croises dans les procédures se répartissent en trois catégories.

Les formulations des procédures et l'opération Git correspondante
===« Pense à faireun commit »« Envoie-lesur GitHub »« Récupère ladernière version »CommitPushPullLa modif d'app.jsest enregistréeLe commit partvers le serveurLes commits duserveur arriventUniquement surton ordinateurToi → GitHubGitHub → toi
Chaque ligne est une opération. De gauche à droite : la formulation de la procédure, le nom de l'opération, ce qui se passe alors, et jusqu'où cela va. Seule la ligne du haut se termine entièrement à l'intérieur de ton ordinateur.

La colonne de gauche reste à l'intérieur de ton ordinateur, celles du milieu et de droite échangent avec GitHub.

Enregistrer par-dessus ne laisse aucun état antérieur — ce que la gestion de versions enregistre

Enregistrer par-dessus (écraser le fichier), c'est remplacer le contenu de app.js par le contenu actuel.

Rien de l'ancien contenu ne subsiste après le remplacement : tu auras beau enregistrer, tu ne pourras pas revenir à un état antérieur.

Ce que tu as fait avant de modifierOù se trouve l'ancien contenuUne fois que ça ne marche plus
Seulement enregistré par-dessusNulle partRetour impossible
Éditeur laissé ouvertL'historique d'annulation (perdu à la fermeture)Les modifications faites pendant qu'il est ouvert sont annulables
git commit exécutéL'enregistrement dans le dépôtRetour possible à tout moment

L'ancien contenu ne reste dans le dépôt que si tu as fait un commit.

Le seul point de bascule, c'est d'avoir exécuté git commit une fois avant de modifier.

Cette seule commande crée un point où revenir.

Seul un commit laisse un enregistrement

Enregistrer par-dessus efface l'ancien contenu avec le contenu actuel, et ce qui est effacé ne subsiste nulle part sur l'ordinateur.

Le commit ajoute un enregistrement de app.js tel qu'il est à ce moment-là, sans rien effacer ; donc quand plus rien ne fonctionne, les seuls points où tu peux revenir sont ceux pour lesquels tu as fait un commit.

Le commit se fait en deux étapes : choisir les modifications à enregistrer, puis les enregistrer

Le commit se divise en deux étapes : tu choisis d'abord, puis tu enregistres.

L'étape où tu choisis et inscris les modifications s'appelle le staging (l'étape où tu sélectionnes et inscris les modifications à inclure dans le commit), et à cause de ces deux étapes, il existe trois emplacements de stockage dans le dossier my-app.

Les trois emplacements par lesquels passe une modification dans le dossier my-app
my-app (le dossier de l'application de réservation que tu construis)
Fichiers en cours de travail
  • app.js — le contenu actuellement ouvert dans l'éditeur
  • style.css — le fichier qui décrit l'apparence de l'écran
  • Enregistrer par-dessus remplace le contenu ici
Le dossier dédié créé par Git
Staging
  • Contient les modifications choisies avec git add
  • Redevient vide quand tu exécutes git commit
Dépôt
  • Les commits alignés du plus ancien au plus récent
  • git commit en ajoute un
Le cadre extérieur est le dossier my-app. En haut, les fichiers actuellement ouverts dans l'éditeur ; en dessous, le dossier dédié créé par Git, qui contient le staging et le dépôt.

Une modification descend du haut vers le bas en deux temps : git add et git commit.

La modification d'index.html que tu n'as pas choisie n'est pas perdue, et tu pourras la choisir la fois suivante.

La procédure pour vérifier avant d'enregistrer tient en ces trois lignes.

# Vérifier les fichiers modifiés
git status

# Choisir et inscrire les modifications à enregistrer
git add app.js

# Enregistrer les modifications choisies avec un message court
git commit -m "Ajout de l'écran de connexion"

Exécuter git status affiche les noms des fichiers que tu as modifiés, et git log montre la liste des enregistrements.

Si tu exécutes git commit sans avoir exécuté git add, aucune modification n'a été choisie et aucun enregistrement n'est créé.

Choisis ce que tu enregistres avant de l'enregistrer

Le commit se fait en deux étapes : choisir et enregistrer.

git add choisit les modifications qui entrent dans cet enregistrement et git commit transforme en un seul enregistrement uniquement ce que tu as choisi ; si tu oublies l'étape du choix, aucun enregistrement ne s'ajoute.

Le dépôt se trouve dans le dossier, avec les commits alignés du plus ancien au plus récent

Le dossier dédié qui contient le dépôt est créé au moment où tu exécutes git init, la commande qui démarre l'enregistrement dans ce dossier.

À chaque commit, un enregistrement de plus s'y ajoute.

Les commits alignés dans le dépôt
Dépôt (à l'intérieur du dossier dédié créé par Git)
Le premier commit
  • app.js tel qu'il était quand tu as construit l'écran
  • La date, l'heure et le message « Création de l'écran »
Le deuxième commit
  • app.js et style.css tels qu'ils étaient quand tu as ajouté les champs de saisie
  • La date, l'heure et le message « Ajout des champs de saisie »
Le dernier commit
  • app.js enregistré le plus récemment
  • La date, l'heure et le message « Ajout de l'écran de connexion »
Le cadre extérieur est le dépôt. Les commits qu'il contient sont alignés depuis le haut, du plus ancien au plus récent, et un nouvel enregistrement ne réécrit pas les commits précédents.

Revenir en arrière, c'est choisir l'un des enregistrements alignés et remplacer par son contenu le fichier app.js sur lequel tu travailles.

Pour les fichiers que tu ne veux pas enregistrer, tu peux écrire leur nom dans un fichier de configuration appelé .gitignore, placé dans le dossier.

Cela empêche l'enregistrement des fichiers qui n'ont pas encore été enregistrés, et n'a aucun effet sur un fichier déjà enregistré une fois.

Les enregistrements ne disparaissent pas : ils s'alignent du plus ancien au plus récent

Le dépôt se trouve dans le dossier dédié situé dans le dossier my-app.

À chaque commit, un enregistrement de plus s'ajoute et les précédents ne sont jamais réécrits ; revenir en arrière, c'est donc choisir l'un des enregistrements alignés et donner son contenu au fichier actuel.

QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Parmi ces affirmations sur la différence entre enregistrer par-dessus et faire un commit, laquelle est correcte ?

Question 2Le commit se fait en deux étapes. Quelle étape précède l'enregistrement ?

Question 3Quelle opération envoie vers le dépôt distant placé sur un serveur un commit enregistré dans le dépôt de ton ordinateur ?