Aller au contenu principal

delta : un pager avec coloration syntaxique pour git diff

Arrêtez de plisser les yeux devant les sorties brutes de git diff. Découvrez comment installer et configurer Delta pour ajouter coloration syntaxique et vue côte à côte en moins de 5 minutes.

· 8 minutes de lecture
Voir la source
Christophe
Amoureux de Markdown, WSL et Docker ~ Curieux insatiable.
Claude Code
AI Assistant
Cet article existe aussi en anglais — lire la version originale.

Traduction automatique

Cette traduction a été produite par une IA. Elle peut contenir des contresens ou des maladresses, en particulier sur les termes techniques. En cas de doute, consultez l'article de référence en anglais — c'est lui qui fait foi.

Journal des modifications

Dernière
added a Docker-first demo to try before installing

delta : un pager avec coloration syntaxique pour git diff

⚡
TL;DR

La sortie de git diff est fonctionnelle mais difficile à lire : pas de coloration syntaxique, pas de vue côte à côte, des numéros de ligne noyés dans le bruit des @@ -47,6 +47,8 @@. delta est un pager de remplacement immédiat qui transforme chaque git diff, git show et git log -p en une vue côte à côte, colorée, avec des diffs au niveau du mot — sans modifier une seule de vos commandes git.

Cela fait trente secondes que vous fixez la sortie d'un git diff pour comprendre ce qui a réellement changé. Les lignes en plus et en moins se confondent, chaque fichier affiche la même nuance de rouge et de vert, et les numéros de ligne sont enfouis dans un en-tête qu'il faut déchiffrer consciemment.

delta règle le problème en cinq minutes.

Il rejoint la même famille de réécritures modernes que ripgrep (pour grep) et eza (pour ls). En dehors d'un repository git, diff reste l'outil de référence.

Avant et après​

Une ligne modifiée sans delta​

- const expiry = token.exp * 1000;
+ const expiry = token.exp * 1000 + TOKEN_GRACE_MS;

Tout a le même poids visuel. Vous parcourez toute la ligne à la recherche de la différence.

La même ligne avec delta​

Delta met en évidence + TOKEN_GRACE_MS au niveau du caractère — le reste de la ligne reste atténué. Votre œil va directement au changement, pas au contexte inchangé autour.

Ce diff au niveau du mot est particulièrement utile quand :

  • Une variable a été renommée (getUserById → findUserById)
  • Une faute de frappe a été corrigée dans une chaîne
  • Un flag a été ajouté ou retiré d'un long appel de fonction

Sans diff au niveau du mot, chacun de ces cas produit une ligne supprimée entièrement rouge et une ligne ajoutée entièrement verte. Avec delta, seul le mot modifié est mis en évidence.

Qu'est-ce que delta ?​

delta est un pager avec coloration syntaxique qui s'intercale entre git et votre terminal. Il intercepte la sortie brute du diff et l'affiche avec :

  • Une coloration syntaxique par langage — un changement TypeScript ressemble à du TypeScript, un changement YAML ressemble à du YAML
  • Une vue côte à côte — ancienne version à gauche, nouvelle version à droite, alignées ligne par ligne
  • Un diff au niveau du mot — met en évidence les caractères exacts qui ont changé dans une ligne, pas la ligne entière
  • Des numéros de ligne — toujours visibles, toujours alignés
  • La navigation — sautez d'un hunk à l'autre avec n et N

Le point essentiel : vous ne changez aucune commande git. Vous tapez toujours git diff, git show, git log -p. Delta intercepte la sortie automatiquement.

Le voir à l'œuvre avec Docker​

Vous venez de lire le diff « avant » ci-dessus. Voici un container où delta est déjà installé, configuré et pointé sur un vrai changement non indexé — pour voir l'« après » sans toucher à votre propre .gitconfig.

Pourquoi Docker d'abord ?

Le Dockerfile ci-dessous installe git et git-delta, écrit le bloc .gitconfig complet de cet article et prépare un petit repo avec exactement le type de changement d'un seul mot (+ TOKEN_GRACE_MS) qui rend le diff au niveau du mot de delta intéressant à voir. Rien ne change sur votre machine.

Buildez-le et lancez-le :

>user@machine: ~/delta-demo

$ docker build -t delta-demo . [+] Building 26.7s (8/8) FINISHED ✔ exporting to image

$ docker run --rm -it delta-demo 🐳 root ~/demo # git diff

git diff s'ouvre en vue côte à côte, avec coloration syntaxique, et TOKEN_GRACE_MS ressort au niveau du caractère au lieu de voir toute la ligne passer au vert. Appuyez sur q pour fermer le pager, puis essayez git log -p, git show HEAD, ou modifiez auth.js vous-même et relancez le diff — la même configuration s'applique à toutes les commandes.

Installation​

Prérequis : git-delta

>user@machine: ~/yourproject
$ sudo apt install git-delta

Vérifier :

>user@machine: ~/yourproject
$ delta --version
delta 0.18.2

Sur les anciennes versions d'Ubuntu/Debian

Le package peut s'appeler delta plutôt que git-delta. Si apt install git-delta échoue, essayez sudo apt install delta — ou installez le dernier binaire depuis la page des releases GitHub.

Configurer git pour utiliser delta​

Delta fonctionne comme un remplacement de core.pager. Ouvrez votre ~/.gitconfig et ajoutez :

[core]
pager = delta

[interactive]
diffFilter = delta --color-only

[delta]
navigate = true
side-by-side = true
line-numbers = true
syntax-theme = Dracula

[merge]
conflictstyle = diff3

[diff]
colorMoved = default

Enregistrez le fichier. Pas besoin de redémarrer le shell — le pager est invoqué à chaque commande.

Voyons ce que fait chaque option.

Référence de configuration

  • core.pager = delta — indique à git de faire passer toute sortie paginée par delta au lieu de less. Cela couvre git diff, git show, git log -p, git stash show -p, et plus encore.
  • interactive.diffFilter = delta --color-only — applique le rendu couleur de delta dans les commandes interactives comme git add -p, sans casser la gestion de l'entrée.
  • navigate = true — appuyez sur n pour sauter au fichier modifié suivant, N pour revenir en arrière. Indispensable quand vous relisez un diff qui touche beaucoup de fichiers.
  • side-by-side = true — affiche l'ancienne et la nouvelle version sur deux colonnes. Le plus gros gain de lisibilité.
  • line-numbers = true — affiche les numéros de ligne dans une colonne dédiée de chaque côté. Fini le déchiffrage des en-têtes @@ -47,6 +47,8 @@.
  • syntax-theme = Dracula — définit le thème de couleurs pour la coloration syntaxique. Changez-le pour l'accorder au thème de votre terminal. Lancez delta --list-syntax-themes pour voir toutes les options.
  • merge.conflictstyle = diff3 — combiné à delta, affiche les trois versions lors d'un conflit de merge (la nôtre, la leur, et l'ancêtre commun). Bien plus simple à résoudre.

Le mode côte à côte​

Avec side-by-side = true, delta divise chaque fichier modifié en deux colonnes :

  • Gauche — l'ancienne version, avec les lignes supprimées en rouge
  • Droite — la nouvelle version, avec les lignes ajoutées en vert
  • Les deux — les lignes de contexte inchangées sont affichées des deux côtés, alignées

Pour une fonction renommée appelée à dix endroits, vous ne lisez plus deux streams entremêlés de rouge et de vert. Vous lisez l'avant à gauche et l'après à droite, comme dans un outil de code review.

Si votre terminal est étroit et que les deux colonnes deviennent trop serrées, vous pouvez désactiver le côte à côte pour une seule commande :

git -c delta.side-by-side=false diff

Ou ajoutez un alias court dans .gitconfig :

[alias]
dw = -c delta.side-by-side=false diff

git dw vous donne le mode une colonne ; git diff garde le comportement par défaut.

Les thèmes​

Delta utilise le même moteur de thèmes que bat et syntect. Pour lister tous les thèmes disponibles :

>user@machine: ~/yourproject

$ delta --list-syntax-themes

Pour prévisualiser un thème sans modifier votre configuration :

>user@machine: ~/yourproject

$ git diff | delta --syntax-theme=gruvbox-dark

Quelques bons points de départ :

Thèmes conseillés selon le fond du terminal

  • Fond sombre — Dracula, gruvbox-dark, TwoDark, Nord
  • Fond clair — GitHub, Monokai Extended Light, OneHalfLight

Avec navigate = true, delta ajoute une navigation au clavier dans le pager :

Touches de navigation

  • n — Sauter au fichier modifié suivant
  • N — Sauter au fichier modifié précédent
  • q — Quitter
  • Espace — Page suivante

C'est surtout utile avec git log -p ou git diff HEAD~10, où le diff s'étale sur de nombreux fichiers.

Delta fonctionne partout où git fonctionne​

Une fois core.pager = delta défini, delta s'applique à toutes les commandes git qui paginent leur sortie :

git show HEAD # last commit, with highlighting
git log -p # full history with diffs
git stash show -p # what's in a stash entry
git diff HEAD~3 # compare to 3 commits ago
git diff main...feature # compare branches

Aucun flag supplémentaire. Aucune fonction wrapper. Ça fonctionne, point.

Pour aller plus loin​

Si vous utilisez aussi des alias git diff dans votre .gitconfig, ces alias profitent automatiquement de delta puisque le pager s'applique au niveau de la sortie, pas au niveau de la commande.

Pour une expérience git en TUI encore plus riche, delta sert de moteur de rendu des diffs dans lazygit et tig — deux clients git TUI qui respectent core.pager.

Conclusion​

Trente secondes à plisser les yeux devant un git diff brut, c'était tout le problème — pas de coloration syntaxique, pas de côte à côte, des numéros de ligne noyés dans le bruit des @@. delta règle les trois avec un apt install et une poignée de lignes dans .gitconfig, et toutes les commandes git que vous connaissez déjà continuent de fonctionner exactement telles quelles.

Si vous parcourez aussi l'historique avec des alias, configurer les alias git diff dans .gitconfig est l'étape suivante naturelle — ils héritent du rendu de delta gratuitement.


🦋 Rejoignez la conversation sur BlueskyUn compte Bluesky gratuit est nécessaire pour aimer, repartager ou commenter. Ce bloc interroge l'API publique de Bluesky directement depuis votre navigateur (sans cookie, sans connexion) — votre adresse IP parvient donc aux serveurs de Bluesky dès que cette section se charge.

Chargement des commentaires…

Cet article vous a-t-il été utile ?
Avez-vous suivi les étapes de cet article ?