On continue notre série de billet sur Git – le b.a.-ba.

Parfois la commande git diff ne montre pas de différence sur les fichiers même si git status indique qu’ils ont été modifiés.

Avant de valider (commit) des modifications, il est courant de vouloir les vérifier. La première commande à utiliser est :

git status

Cette commande liste tous les fichiers modifiés. Certains sont prêts à être validés, d’autres ne sont pas dans le suivi de version ou nécessitent d’être mergés.

Parfois, cette liste ne suffit pas. Il est nécessaire de vérifier ce qui a changé dans les fichiers. Cette action est possible avec la commande :

git diff

Le résultat est sous la forme d’un diff classique et permet donc de voir les modifications apportées.
Vous est-il déjà arrivé d’avoir des fichiers marqués comme modifiés dans git status mais aucune modification n’était visible dans git diff ?

En effet, cette commande ne montre que les différences entre l’espace de travail et l’index. Il existe 3 modes possibles pour inspecter les différences :

  • git diff : compare l’espace de travail et l’index (modifications déjà assemblées)
  • git diff --cached ou git diff --staged : compare l’index et le dernier commit
  • git diff HEAD : compare l’espace de travail et le dernier commit

Avec ces 3 commandes, vous serez capables de trouver toutes les modifications à commiter !

Cette note me rappelle un point intéressant sur une autre commande :

git add est une commande multi-usage : elle peut être utilisée pour placer un fichier sous suivi de version, pour indexer un fichier ou pour d’autres actions telles que marquer comme résolus des conflits de fusion de fichiers).

Avec cette précision, vous saurez donc facilement quel mode de git diff utiliser. 😉 Si vous avez besoin d’un exemple concret, vous pouvez consulter Git Guys ou la documentation de référence.