Aller au contenu

Configure delta for optimal code review

PlateformeCommande
Ubuntu/Debianwget https://github.com/dandavison/delta/releases/download/0.16.5/git-delta_0.16.5_amd64.deb && sudo dpkg -i git-delta_0.16.5_amd64.deb
Arch Linuxsudo pacman -S git-delta
Fedora/RHELsudo dnf install git-delta
Alpine Linuxapk add git-delta
macOS (Homebrew)brew install git-delta
macOS (MacPorts)sudo port install git-delta
Windows (Scoop)scoop install delta
Windows (Chocolatey)choco install delta
Windows (Winget)winget install dandavison.delta
Any (Cargo)cargo install git-delta
Verify Installationdelta --version
CommandeDescription
git config --global core.pager deltaDéfinir delta comme pager Git par défaut
git diffAfficher les modifications non stagées avec delta
git diff --cachedAfficher les modifications en staging avec delta
git diff path/to/file.pyAfficher les modifications dans un fichier spécifique
git diff mainComparer la branche courante avec main
git diff branch1..branch2Comparer deux branches
git show HEADAfficher le dernier commit avec diff
git show abc123Afficher le commit spécifique avec diff
git log -pAfficher l’historique des commits avec les différences
git diff commit1 commit2Comparer deux commits spécifiques
`diff file1.txt file2.txt \delta`
delta file1.txt file2.txtComparer les fichiers directement avec delta
delta --show-syntax-themesAfficher tous les thèmes de syntaxe disponibles
delta --list-languagesLister tous les langages de programmation pris en charge
delta --show-configAfficher la configuration delta actuelle
git blame file.pyAfficher git blame avec un formatage delta
`git grep “function” \delta`
git diff --statAfficher les statistiques de différence avec delta
`git diff -w \delta`
delta changes.diffAfficher un fichier diff sauvegardé avec delta
CommandeDescription
`git diff \delta —side-by-side`
`git diff \delta —side-by-side —width 200`
`git diff \delta —line-numbers`
`git diff \delta —syntax-theme Monokai`
`git diff \delta —language python`
git config --global delta.side-by-side trueActiver le mode côte à côte globalement
git config --global delta.line-numbers trueActiver les numéros de ligne globalement
git config --global delta.navigate trueActiver le mode de navigation pour se déplacer entre les fichiers
git config --global delta.hyperlinks trueActiver les hyperliens de chemin de fichier cliquables
git config --global diff.colorMoved defaultMettre en évidence les blocs de code déplacés
git config --global pager.blame deltaUtilisez delta pour la sortie de git blame
git config --global pager.grep deltaUtilisez delta pour la sortie de git grep
git config --global interactive.diffFilter "delta --color-only"Utilisez delta dans les commandes Git interactives
git blame -L 10,20 file.pyAfficher la blame pour une plage de lignes spécifique avec delta
git diff --word-diffAfficher les différences au niveau des mots avec delta
git config --global delta.pager "less -RFX"Personnaliser le comportement du pager
git config --global delta.features "line-numbers decorations"Activer plusieurs fonctionnalités simultanément
`git diff —ignore-space-at-eol \delta`
git config --global delta.max-line-length 512Définir la longueur maximale de ligne pour l’affichage
git config --global delta.tabs 4Définir la largeur de tabulation pour l’affichage
~/.gitconfig## Utilisation Avancée
.git/config## Configuration

Delta est configuré via le système de configuration de Git. La configuration peut être définie globalement (```ini [core] pager = delta

[interactive] diffFilter = delta —color-only

[delta] navigate = true line-numbers = true side-by-side = true ) ou par dépôt (ini [core] pager = delta

[interactive] diffFilter = delta —color-only

[delta] # General settings navigate = true light = false side-by-side = true line-numbers = true hyperlinks = true

# Syntax highlighting
syntax-theme = Monokai Extended

# Layout
width = 200
tabs = 4
wrap-max-lines = unlimited

# Line numbers
line-numbers-left-format = "{nm:>4}│"
line-numbers-right-format = "{np:>4}│"
line-numbers-minus-style = "red"
line-numbers-plus-style = "green"
line-numbers-zero-style = "white dim"

# Colors and styles
minus-style = syntax "#3f0001"
minus-non-emph-style = syntax "#3f0001"
minus-emph-style = syntax "#901011"
minus-empty-line-marker-style = normal "#3f0001"

plus-style = syntax "#002800"
plus-non-emph-style = syntax "#002800"
plus-emph-style = syntax "#007800"
plus-empty-line-marker-style = normal "#002800"

# Commit and file decoration
commit-decoration-style = bold yellow box ul
file-decoration-style = blue ul
file-style = bold yellow ul
hunk-header-decoration-style = blue box
hunk-header-style = file line-number syntax

# Whitespace
whitespace-error-style = reverse red

# Moved code detection
color-moved-style = syntax

[diff] colorMoved = default


### Configuration de Base
```ini
[delta "my-dark-theme"]
    syntax-theme = Dracula
    line-numbers = true
    side-by-side = true
    navigate = true
    minus-style = syntax "#450a15"
    plus-style = syntax "#0a4514"

[delta "my-light-theme"]
    syntax-theme = GitHub
    light = true
    line-numbers = true
    side-by-side = false

[delta]
    features = my-dark-theme

Exemple de Configuration Complète

Monokai Extended

  • Nord
  • Dracula
  • gruvbox-dark
  • gruvbox-light
  • Solarized (dark)
  • Solarized (light)
  • GitHub
  • OneHalfDark
  • OneHalfLight

Ensembles de Fonctionnalités Personnalisées

Créez des profils de configuration réutilisables :

# Configure delta for optimal code review
git config --global core.pager delta
git config --global delta.side-by-side true
git config --global delta.line-numbers true
git config --global delta.navigate true

# Review changes before committing
git diff

# Review staged changes
git diff --cached

# Review specific file changes
git diff path/to/modified/file.js

Thèmes de Syntaxe Populaires

Compare feature branch with main

git diff main..feature-branch

View side-by-side comparison with context

git diff main..feature-branch | delta —side-by-side —width 180

Check for moved code blocks

git diff —color-moved main..feature-branch

Review specific file differences between branches

git diff main..feature-branch — src/app.py


## Cas d'Utilisation Courants

### Cas d'Utilisation 1 : Workflow de Revue de Code Quotidien
```bash
# View commit history with diffs
git log -p --follow path/to/file.py

# Compare specific commits
git diff abc123..def456

# Show changes in a specific commit
git show abc123

# View blame with delta formatting
git blame -L 50,100 src/main.rs

# Search for changes in history
git log -p -S "function_name" | delta

Cas d’Utilisation 2 : Comparaison de Branches pour Fusion

# Enable side-by-side view for conflicts
git config --global delta.side-by-side true
git config --global delta.line-numbers true

# View conflicted files
git diff --name-only --diff-filter=U

# Examine conflicts in detail
git diff path/to/conflicted/file.py

# Compare with both parents during merge
git diff HEAD
git diff MERGE_HEAD

Cas d’Utilisation 3 : Investigation de l’Historique du Code

# Generate formatted diff for documentation
git diff main..feature > changes.diff
delta changes.diff > formatted-changes.txt

# Create side-by-side comparison
git diff --stat main..feature
git diff main..feature | delta --side-by-side --width 200

# Export with specific theme for presentations
git diff | delta --syntax-theme "Monokai Extended" --line-numbers

Cas d’Utilisation 4 : Résolution de Conflits de Fusion

git config --global core.pager delta

Cas d’Utilisation 5 : Création de Rapports de Différences Lisibles

git config --global delta.navigate true

Meilleures Pratiques

  • Définir delta globalement : Configurez nune fois pour utiliser delta dans tous les dépôts, assurant une expérience de visualisation de différences cohérente.

  • Activer le mode de navigation : Utilisez Npour naviguer rapidement entre les fichiers dans de grandes différences en utilisant les touches delta --show-syntax-themespour prévisualiser toutes les options. side-by-side = truepour les revues de code et les comparaisons de fusion, mais désactivez-le pour les vérifications rapides sur des terminaux étroits afin d’éviter les problèmes de retour à la ligne. line-numbers = true), mais envisagez de les désactiver pour les différences simples afin de réduire l’encombrement visuel. diff.colorMoved = defaultpour mettre en évidence le code qui a été déplacé plutôt que modifié, rendant les revues de refactorisation beaucoup plus claires. featuresoption pour basculer entre elles selon les besoins. width, tabs, et wrap-max-linesen fonction de la taille de votre terminal typique et des normes de codage pour éviter les sauts de ligne maladroits. interactive.diffFilter = delta --color-onlypour obtenir la coloration de delta dans git add -pet d’autres commandes Git interactives. git config --global alias.review 'diff --color-moved'pour des workflows de revue standardisés.

Dépannage

ProblèmeSolution
Delta not being used for diffsVerify configuration with git config --global core.pager - should return delta. If not, run git config --global core.pager delta
Colors not displaying correctlyCheck terminal supports 24-bit color. Set COLORTERM=truecolor environment variable. Try different syntax themes with delta --show-syntax-themes
Side-by-side view is garbledTerminal width may be too narrow. Disable with git config --global delta.side-by-side false or increase terminal width. Adjust with --width option
Line numbers not showingEnable explicitly: git config --global delta.line-numbers true. Check that feature isn’t disabled in a custom feature set
Syntax highlighting not workingVerify file extension is recognized with delta --list-languages. Force language with --language option or check syntax-theme setting
Delta not working in git add -pSet interactive diff filter: git config --global interactive.diffFilter "delta --color-only". The --color-only flag is essential for interactive mode
Pager quits immediatelyAdjust pager settings: git config --global delta.pager "less -RFX". The -F flag causes less to quit if output fits on one screen
Performance issues with large diffsDisable side-by-side mode, reduce max-line-length, or use --syntax-theme none to disable syntax highlighting for faster rendering
Hyperlinks not clickableEnsure terminal supports hyperlinks (iTerm2, kitty, Alacritty). Enable with git config --global delta.hyperlinks true
Configuration not taking effectCheck for conflicting configs: `git config —list
Unicode characters displaying incorrectlyEnsure terminal uses UTF-8 encoding. Set LC_ALL=en_US.UTF-8 or similar locale. Check font supports Unicode characters used in decorations