Aller au contenu
Développement medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Enregistrer des modifications avec Git : add, commit, status

14 min de lecture

Ce guide vous apprend à enregistrer vos modifications dans Git étape par étape. Vous allez maîtriser le cycle quotidien de tout utilisateur Git : vérifier l’état de vos fichiers (status), préparer vos modifications (add), inspecter les différences (diff) et créer un commit. Vous apprendrez aussi à exclure les fichiers indésirables avec .gitignore.

Prérequis : un dépôt Git initialisé. Avoir compris les 3 états de Git (Working Directory, Staging Area, Repository).

  • Le cycle de vie des fichiers : non suivi → non modifié → modifié → indexé
  • git status : voir l’état de chaque fichier
  • git add : placer des modifications dans la Staging Area
  • git diff : inspecter ce qui a changé
  • git commit : enregistrer un snapshot dans l’historique
  • .gitignore : exclure les fichiers qui ne doivent pas être versionnés

Chaque fichier de votre projet est dans l’un de ces 4 états :

Les trois états de Git : répertoire de travail, zone de staging et dépôt

Un fichier non suivi (untracked) est un fichier que Git ne connaît pas encore. Dès que vous l’ajoutez avec git add, Git commence à le suivre. Après un commit, le fichier redevient “non modifié” jusqu’à votre prochaine modification.

C’est la commande que vous utiliserez le plus souvent. Elle vous montre exactement dans quel état se trouvent vos fichiers.

Fenêtre de terminal
git status

Sortie attendue (dépôt avec des fichiers dans différents états) :

On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: index.html
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: style.css
Untracked files:
(use "git add <file>..." to include in what will be committed)
script.js

Cette sortie vous indique trois choses :

  • index.html est dans la Staging Area, prêt à être committé
  • style.css est modifié mais pas encore indexé
  • script.js est non suivi — Git ne le connaît pas encore

La commande git add déplace des fichiers du Working Directory vers la Staging Area. C’est l’étape de sélection : vous choisissez exactement quelles modifications inclure dans votre prochain commit.

Fenêtre de terminal
git add index.html
Fenêtre de terminal
git add index.html style.css script.js
Fenêtre de terminal
git add .

Cette commande ajoute tout le contenu du répertoire courant et de ses sous-répertoires. C’est pratique, mais vérifiez d’abord avec git status que vous ne risquez pas d’indexer des fichiers indésirables.

Ajouter des parties d’un fichier (staging interactif)

Section intitulée « Ajouter des parties d’un fichier (staging interactif) »

Pour n’indexer que certaines modifications d’un fichier, utilisez le mode patch :

Fenêtre de terminal
git add -p style.css

Git vous présente chaque bloc de modifications (appelé hunk) et vous demande quoi en faire :

@@ -1,5 +1,6 @@
body {
font-family: sans-serif;
+ color: #333;
margin: 0;
padding: 0;
}
Stage this hunk [y,n,q,a,d,s,e,?]?

Les options principales :

ToucheAction
yIndexer ce bloc
nNe pas indexer ce bloc
qQuitter (ne plus proposer de blocs)
sDécouper le bloc en morceaux plus petits

Le staging interactif vous permet de créer des commits propres et ciblés, même quand vous avez fait plusieurs modifications dans le même fichier.

Avant de committer, inspectez ce qui a changé pour vérifier que vos modifications sont correctes.

Fenêtre de terminal
git diff

Cette commande compare le Working Directory avec la Staging Area. Elle montre ce que vous avez modifié mais pas encore ajouté avec git add.

Sortie attendue :

diff --git a/style.css b/style.css
index 1234567..abcdefg 100644
--- a/style.css
+++ b/style.css
@@ -1,5 +1,6 @@
body {
font-family: sans-serif;
+ color: #333;
margin: 0;
padding: 0;
}

Les lignes préfixées par + sont des ajouts, celles par - sont des suppressions. Le contexte (lignes sans préfixe) vous aide à situer les modifications.

Voir les modifications indexées (prêtes à committer)

Section intitulée « Voir les modifications indexées (prêtes à committer) »
Fenêtre de terminal
git diff --staged

Cette commande compare la Staging Area avec le dernier commit. Elle montre exactement ce qui sera enregistré au prochain git commit.

CommandeCompareMontre
git diffWorking Dir ↔ StagingModifications non indexées
git diff --stagedStaging ↔ Dernier commitCe qui sera committé
git diff HEADWorking Dir ↔ Dernier commitToutes les modifications

Un commit enregistre le contenu de la Staging Area comme un nouveau snapshot dans l’historique. Chaque commit est identifié par un SHA unique et contient un message descriptif.

Fenêtre de terminal
git commit -m "Ajout de la page d'accueil et des styles de base"

Sortie attendue :

[main 3f7a2b1] Ajout de la page d'accueil et des styles de base
2 files changed, 45 insertions(+)
create mode 100644 index.html
create mode 100644 style.css

Pour les modifications plus complexes, ouvrez votre éditeur pour écrire un message sur plusieurs lignes :

Fenêtre de terminal
git commit

Git ouvre l’éditeur configuré. Écrivez un titre court (50 caractères max), une ligne vide, puis une description détaillée :

Ajout du système d'authentification utilisateur
- Création du formulaire de connexion (login.html)
- Ajout de la validation côté client (auth.js)
- Configuration des styles pour le formulaire (auth.css)

Pour les fichiers déjà suivis par Git (pas les nouveaux fichiers) :

Fenêtre de terminal
git commit -am "Correction de la couleur du texte"

L’option -a ajoute automatiquement tous les fichiers modifiés suivis à la Staging Area avant de committer. Les fichiers non suivis (untracked) ne sont pas inclus.

Vous avez oublié un fichier ou fait une faute dans le message ?

Fenêtre de terminal
git add fichier-oublie.css
git commit --amend

Git ouvre l’éditeur pour modifier le message, et le fichier oublié est inclus dans le commit. Le SHA du commit change car le contenu est différent.

Un bon message de commit aide à comprendre l’historique du projet. Voici les conventions les plus répandues :

RègleExemple
Titre court (50 car. max)Ajout de la page de contact
Verbe à l’impératifAjoute (pas “Ajouté” ou “Ajout de”)
Ligne vide après le titreSépare le titre du corps
Corps optionnel (72 car./ligne)Explique le pourquoi, pas le quoi

Désindexer un fichier (sans perdre les modifications)

Section intitulée « Désindexer un fichier (sans perdre les modifications) »

Si vous avez ajouté un fichier par erreur à la Staging Area :

Fenêtre de terminal
git restore --staged style.css

Le fichier revient à l’état “modifié” dans le Working Directory. Vos modifications ne sont pas perdues.

Pour supprimer un fichier et l’enlever du suivi Git :

Fenêtre de terminal
git rm ancien-fichier.txt

Pour arrêter de suivre un fichier sans le supprimer du disque (utile si vous l’avez committé par erreur) :

Fenêtre de terminal
git rm --cached fichier-secret.env

Le fichier reste sur votre disque mais Git ne le suit plus. Pensez à l’ajouter au .gitignore pour éviter de le ré-indexer.

Le fichier .gitignore indique à Git quels fichiers et dossiers ignorer. Ces fichiers n’apparaîtront plus dans git status et ne seront jamais indexés par git add ..

# Commentaire
*.log # Tous les fichiers .log
node_modules/ # Tout le dossier node_modules
!important.log # Exception : suivre ce fichier malgré *.log
build/ # Dossier de build
.env # Fichier d'environnement (secrets)
PatternCorrespond à
*.logTous les fichiers terminant par .log
build/Le dossier build et tout son contenu
doc/**/*.pdfTous les .pdf dans doc/ et ses sous-dossiers
!README.mdException : ne pas ignorer ce fichier
/TODOSeulement le fichier TODO à la racine

GitHub maintient une collection de modèles .gitignore pour chaque langage et framework : github.com/github/gitignore.

Quelques exemples courants :

__pycache__/
*.py[cod]
.venv/
*.egg-info/
dist/
.env
SymptômeCause probableSolution
git add n’ajoute pas un fichierLe fichier est dans .gitignoreVérifiez .gitignore ou utilisez git add -f fichier
Fichier committé par erreurDéjà dans l’historiquegit rm --cached fichier + ajouter au .gitignore
git diff ne montre rienModifications déjà indexéesUtilisez git diff --staged
nothing to commit, working tree cleanTous les fichiers sont committésNormal : faites une modification et recommencez
Message de commit erronéFaute de frappegit commit --amend (si pas encore poussé)
  • git status est votre meilleur ami : utilisez-le avant chaque add et chaque commit
  • git add place les modifications dans la Staging Area — utilisez -p pour un contrôle granulaire
  • git diff (non indexé) et git diff --staged (indexé) vous montrent exactement ce qui va se passer
  • git commit -m "message" enregistre le snapshot dans l’historique
  • .gitignore protège votre dépôt des fichiers indésirables — créez-le avant le premier commit
  • Ne committez jamais de secrets : .env, clés, tokens → dans le .gitignore

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn