git diff

Instantanés de base

Afficher les différences entre vos fichiers, la zone de préparation et les commits


La commande 'git diff' montre exactement les lignes modifiées. Sans argument, elle compare vos fichiers de travail avec la zone de préparation — les modifications pas encore préparées. Avec --staged, elle compare la zone de préparation avec le dernier commit — ce que contiendra votre prochain commit. Donnez-lui des commits ou des branches pour comparer deux versions quelconques du projet.

Synopsis

git diff [<options>] [<commit>] [--] [<path>...]
git diff [<options>] --staged [<commit>] [--] [<path>...]
git diff [<options>] <commit> <commit> [--] [<path>...]
[ ] facultatif| ou<arg> valeur à remplacer... répétable--flag option

Options

Cliquez sur une option pour la déplier

Débutant (4)

Comparer la zone de préparation avec le dernier commit : les modifications que le prochain commit enregistrera. --cached est un synonyme.

RecommandéRelire exactement ce que vous allez committer

Exemple

git diff --staged

Afficher un résumé : chaque fichier modifié avec son nombre de lignes modifiées, puis un total.

RecommandéAperçu rapide de la taille d’une modification

Exemple

git diff --stat

Afficher uniquement les noms des fichiers modifiés.

Si nécessaireLister les fichiers modifiés, p. ex. pour les passer à un linter

Exemple

git diff --name-only

Afficher les noms des fichiers modifiés avec une lettre : A ajouté, M modifié, D supprimé, R renommé.

Si nécessaireVoir quels fichiers ont été ajoutés, modifiés ou supprimés

Exemple

git diff --name-status

Choisir la bonne option

Ce que compare git diff

Choisissez les deux côtés à comparer

CommandeCôté gaucheCôté droit
git diffZone de préparationFichiers de travail
git diff --stagedDernier commitZone de préparation
git diff HEADDernier commitFichiers de travail
git diff A BCommit ACommit B

Exemples

Modifications non préparées

git diff

Ce qui a changé dans vos fichiers mais n’est pas encore préparé.


Modifications préparées

git diff --staged

Ce que contiendra le prochain commit.


Deux commits

git diff HEAD~1 HEAD

Ce que le dernier commit a changé.


Deux branches

git diff main feature/login

Tout ce qui diffère entre deux branches.

Exemples de workflows

1
git diff

Relire ce que vous avez modifié

2
git add app.js

Le préparer

3
git diff --staged

Relire ce qui sera committé

4
git commit -m "Add to cart"

Commit

1
git diff main...feature/login --stat

Les fichiers modifiés par la branche depuis qu’elle s’est séparée de main

2
git diff main...feature/login

Les modifications complètes

Dépannage

git diff n’affiche rien alors que des fichiers ont changé

Cause : Les modifications sont déjà préparées

Utilisez git diff --staged (ou git diff HEAD pour les deux)

Un nouveau fichier manque dans le diff

Cause : Les fichiers non suivis ne sont pas comparés

Préparez-le avec git add, puis utilisez git diff --staged

Tout le fichier apparaît modifié

Cause : Les fins de ligne ou les espaces ont changé

Essayez git diff -w pour ignorer les espaces et vérifiez core.autocrlf

Astuces et pièges

Bonnes pratiques

  • ✓Relisez git diff --staged avant chaque commit.
  • ✓Sur les gros changements, commencez par --stat, puis lisez les détails.
  • ✓Comparez les branches avec trois points (main...branch) pour ne voir que ce que la branche a ajouté.

Erreurs fréquentes

  • ✗S’attendre à ce que git diff montre les modifications préparées — ce n’est pas le cas ; utilisez git diff --staged.
  • ✗S’attendre à voir les fichiers non suivis dans git diff : les nouveaux fichiers n’apparaissent qu’une fois ajoutés.
  • ✗Inverser l’ordre de deux commits : git diff A B montre comment passer de A à B.

FAQ

A:

git diff --staged (ou son synonyme git diff --cached).

A:

git diff HEAD compare le dernier commit avec vos fichiers de travail.

A:

git show <commit>, ou git diff <commit>~1 <commit>.