GIT - 17 Comparaison des différences

Dans cette leçon, nous comparons des versions de code à l'aide de la commande git diff. Je suis dans le repository, sur la branche master, working directory propre. Pour visualiser l'historique, j'utilise l'alias git hist créé précédemment.

Diff entre deux commits

Pour comparer deux points de l'historique, on passe leurs identifiants à git diff. Pour comparer le dernier commit (HEAD) avec un commit antérieur :

git diff HEAD <sha-commit-precedent>

Git affiche dans le terminal toutes les différences entre les deux versions, avec les lignes ajoutées (vert) et supprimées (rouge).

Affichage graphique avec difftool

Pour un affichage plus lisible, on peut passer par l'outil de diff graphique configuré (dans mon cas P4Merge) :

git difftool HEAD <sha>
  • L'outil graphique s'ouvre, fichier par fichier
  • Fermez la fenêtre (ou Ctrl+W) pour passer au fichier suivant
  • Une fois tous les fichiers parcourus, Git rend la main

Diff entre working directory et dernier commit

Modifions coucou.html, sauvegardons. Sans argument, git diff compare le working directory au dernier commit de la branche courante :

git diff
git difftool

Cette comparaison est extrêmement utile en pratique : avant de stager ou committer, on vérifie exactement ce qu'on s'apprête à enregistrer. git diff est très puissant — un git help diff dévoile de nombreuses options, dont la majorité s'applique également à git difftool.

En résumé

Cette leçon explique comment comparer les différences entre commits et le répertoire de travail avec la commande `git diff`. Elle couvre trois cas d'usage : afficher les différences entre deux commits spécifiques avec `git diff HEAD <commit-id>`, examiner les modifications non indexées du répertoire de travail, et utiliser `git difftool` pour visualiser les changements dans un outil graphique configuré. L'accent est mis sur la navigation dans les résultats et la richesse des options disponibles via `git help diff`.

Points clés

  • `git diff <commit-id1> <commit-id2>` affiche les différences entre deux commits spécifiques
  • `git diff` sans arguments compare le répertoire de travail courant avec le dernier commit (HEAD) du repository
  • `git difftool` ouvre un outil de diff graphique configuré (ex: VS Code, Vim) pour examiner les changements visuellement
  • Navigation dans les résultats : Ctrl+W pour passer d'un fichier à l'autre dans l'outil de diff
  • `git help diff` fournit une documentation complète avec de nombreuses options et variantes de la commande

Questions fréquentes

Comment voir les différences entre deux commits spécifiques ?

Utilisez `git diff HEAD <commit-id>` en remplaçant `<commit-id>` par l'identifiant du commit cible. Vous pouvez aussi utiliser `git log` (avec un alias `lg`) pour afficher l'historique et sélectionner le commit à comparer.

Quelle est la différence entre `git diff` et `git difftool` ?

`git diff` affiche les différences en texte dans le terminal, tandis que `git difftool` ouvre un outil graphique configuré (comme VS Code ou Vim) qui facilite la visualisation et la navigation des changements pour les fichiers multiples.

Comment naviguer entre les fichiers modifiés dans `git difftool` ?

Utilisez le raccourci clavier Ctrl+W pour passer au fichier suivant et parcourir l'ensemble des modifications associées au diff.