Les trois zones
Répertoire de travail, index, dépôt — et ce qui fait passer de l'une à l'autre.
Une modification traverse trois zones avant d'entrer dans l'historique. Presque toutes les incompréhensions de Git viennent de la deuxième, l'index, que les autres systèmes n'ont pas.
| Zone | Contient | On y entre par | On en sort par |
|---|---|---|---|
| Répertoire de travail | tes fichiers réels | ton éditeur | git restore <f> |
| Index (staging) | ce qui ira dans le prochain commit | git add | git restore --staged <f> |
| Dépôt | l'historique | git commit | — (il ne se défait pas, il s'ajoute) |
Lire git status
$ git status --short
M src/lib/quiz.ts ← modifié, dans l'index
M src/lib/lab.ts ← modifié, PAS dans l'index
MM content/index.mdx ← une version dans l'index, une autre encore modifiée
?? notes.txt ← non suiviDeux colonnes : la première décrit l'index, la seconde le répertoire de
travail. MM est le cas instructif — tu as ajouté une version à l'index, puis
continué à éditer. Le commit prendra la version de l'index, pas celle du
disque. C'est la source du grand classique : « j'ai commité, mais ma correction
n'y est pas ».
git diff répond à deux questions différentes
git diff # index → répertoire de travail : ce que tu n'as PAS encore ajouté
git diff --staged # dépôt → index : ce qui partira au prochain commitLe réflexe avant tout commit est git diff --staged : c'est la seule commande
qui montre exactement ce qui va être enregistré.
Pourquoi l'index existe
Il permet de composer un commit au lieu de le subir. Tu as corrigé un bogue, renommé trois variables et ajouté une note personnelle ? Trois choses sans rapport, qui méritent des commits distincts — voire, pour la note, aucun.
$ git add -p src/lib/quiz.ts-p propose les modifications morceau par morceau, avec y pour ajouter, n
pour ignorer, s pour découper encore. C'est l'outil qui transforme un
historique fourre-tout en un historique où chaque commit raconte une chose.
`git add .` par réflexe
C'est ainsi qu'on commite un .env, une clé privée ou un dossier de
dépendances. git status coûte deux secondes ; retirer un secret d'un
historique déjà partagé coûte une réécriture complète et une rotation de la
clé — car elle reste lisible chez tous ceux qui ont déjà cloné.
Le piège classique
git commit -a ajoute automatiquement les fichiers suivis modifiés, en
court-circuitant l'index. Pratique, mais il ne prend pas les fichiers non suivis,
ce qui produit l'autre classique : « j'ai créé le fichier, je l'ai commité, et il
n'est pas là ». Un fichier nouveau doit toujours passer par git add.
Réponse unique
Tu fais `git add fichier`, tu continues à l'éditer, puis tu commites. Quelle version est enregistrée ?
Indice · Qu'est-ce que git commit lit exactement ?
[ METTRE EN PRATIQUE ]
Composer un commit
3 étapes · 25 min · 110 XP
[ CETTE LEÇON DANS LES PARCOURS ]
- Fondamentauxétape 2 / 18suivant — Les branches →
- Ingénieur DevOpsétape 5 / 23suivant — Les branches →