Delta Cheatsheet
Delta Cheatsheet
Installazione
Comandi di Base
Utilizzo Avanzato
Configurazione
Delta è configurato attraverso il sistema di configurazione di Git. La configurazione può essere impostata globalmente ( ) o per repository ( ).
Configurazione di Base
Esempio di Configurazione Completa
Set di Funzionalità Personalizzate
Creare profili di configurazione riutilizzabili:
Temi di Sintassi Popolari
Casi d’Uso Comuni
Caso d’Uso 1: Workflow di Revisione del Codice Giornaliero
Caso d’Uso 2: Confronto di Branch per Merge
Caso d’Uso 3: Indagine sulla Storia del Codice
Caso d’Uso 4: Risoluzione Conflitti di Merge
Caso d’Uso 5: Creazione di Report Diff Leggibili
Migliori Pratiche
-
Impostare delta globalmente: Configurare una volta per utilizzare delta in tutti i repository, garantendo un’esperienza di visualizzazione diff coerente.
-
Abilitare la modalità di navigazione: Utilizzare per spostarsi rapidamente tra i file in diff di grandi dimensioni usando i tasti (successivo) e (precedente).
-
Scegliere temi appropriati: Selezionare temi di sintassi che corrispondano allo sfondo del terminale (scuro/chiaro) e forniscano un buon contrasto. Testare con
Would you like me to clarify or expand on any part of the translation?
| Piattaforma | Comando |
|---|---|
| Ubuntu/Debian | wget 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 Linux | sudo pacman -S git-delta |
| Fedora/RHEL | sudo dnf install git-delta |
| Alpine Linux | apk 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 Installation | delta --version |
Basic Commands
| Comando | Descrizione |
|---|---|
git config --global core.pager delta | Imposta delta come pager predefinito di Git |
git diff | Visualizza modifiche non in staging con delta |
git diff --cached | Visualizza le modifiche in staging con delta |
git diff path/to/file.py | Visualizza modifiche in file specifico |
git diff main | Confronta il branch corrente con main |
git diff branch1..branch2 | Confronta due branch |
git show HEAD | Mostra ultimo commit con diff |
git show abc123 | Mostra commit specifico con diff |
git log -p | Visualizza la cronologia dei commit con le differenze |
git diff commit1 commit2 | Confronta due commit specifici |
| `diff file1.txt file2.txt \ | delta` |
delta file1.txt file2.txt | Confronta file direttamente con delta |
delta --show-syntax-themes | Mostra tutti i temi di sintassi disponibili |
delta --list-languages | Elenca tutti i linguaggi di programmazione supportati |
delta --show-config | Visualizza configurazione delta corrente |
git blame file.py | Visualizza git blame con formattazione delta |
| `git grep “function” \ | delta` |
git diff --stat | Mostra statistiche diff con delta |
| `git diff -w \ | delta` |
delta changes.diff | Visualizza un file diff salvato con delta |
Advanced Usage
| Comando | Descrizione |
|---|---|
| `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 true | Abilita modalità affiancata globalmente |
git config --global delta.line-numbers true | Abilita numeri di riga globalmente |
git config --global delta.navigate true | Abilita la modalità di navigazione per spostarsi tra i file |
git config --global delta.hyperlinks true | Abilita hyperlink cliccabili per percorsi file |
git config --global diff.colorMoved default | Evidenzia blocchi di codice spostati |
git config --global pager.blame delta | Usa delta per l’output di git blame |
git config --global pager.grep delta | Usa delta per l’output di git grep |
git config --global interactive.diffFilter "delta --color-only" | Utilizzare delta nei comandi interattivi di Git |
git blame -L 10,20 file.py | Visualizza blame per un intervallo di righe specifico con delta |
git diff --word-diff | Mostra le differenze a livello di parole con delta |
git config --global delta.pager "less -RFX" | Personalizza il comportamento del pager |
git config --global delta.features "line-numbers decorations" | Abilita più funzionalità contemporaneamente |
| `git diff —ignore-space-at-eol \ | delta` |
git config --global delta.max-line-length 512 | Imposta la lunghezza massima della riga per la visualizzazione |
git config --global delta.tabs 4 | Imposta larghezza scheda per visualizzazione |
Configuration
Delta is configured through Git’s configuration system. Configuration can be set globally (~/.gitconfig) or per-repository (.git/config).
Basic Configuration
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true
line-numbers = true
side-by-side = true
Complete Configuration Example
[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
Custom Feature Sets
Create reusable configuration profiles:
[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
Popular Syntax Themes
Monokai ExtendedNordDraculagruvbox-darkgruvbox-lightSolarized (dark)Solarized (light)GitHubOneHalfDarkOneHalfLight
Common Use Cases
Use Case 1: Daily Code Review Workflow
# 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
Use Case 2: Comparing Branches for Merge
# 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
Use Case 3: Investigating Code History
# 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
Use Case 4: Merge Conflict Resolution
# 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
Use Case 5: Creating Readable Diff Reports
# 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
Best Practices
-
Set delta globally: Configure
git config --global core.pager deltaonce to use delta for all repositories, ensuring consistent diff viewing experience. -
Enable navigation mode: Use
git config --global delta.navigate trueto quickly jump between files in large diffs usingn(next) andN(previous) keys. -
Choose appropriate themes: Select syntax themes that match your terminal background (dark/light) and provide good contrast. Test with
delta --show-syntax-themesper visualizzare tutte le opzioni. -
Usa affiancato per le revisioni: Abilita
side-by-side = trueper le revisioni del codice e i confronti di merge, ma disabilitalo per controlli rapidi su terminali stretti per evitare problemi di ritorno a capo. -
Configura i numeri di riga strategicamente: Abilita i numeri di riga per il debug e le revisioni del codice (
line-numbers = true), ma considera di disabilitarli per diff semplici per ridurre il disordine visivo. -
Sfrutta il rilevamento del codice spostato: Imposta
diff.colorMoved = defaultper evidenziare il codice che è stato spostato piuttosto che modificato, rendendo le revisioni di refactoring molto più chiare. -
Crea set di funzionalità personalizzati: Definisci più configurazioni delta per diversi flussi di lavoro (ad es. “review”, “quick-check”, “presentation”) e passa tra di esse secondo necessità usando l’opzione
features. -
Ottimizza per il tuo flusso di lavoro: Regola le impostazioni
width,tabs, ewrap-max-linesin base alle dimensioni tipiche del tuo terminale e agli standard di codifica per prevenire interruzioni di riga sgradevoli. -
Usa con comandi interattivi: Configura
interactive.diffFilter = delta --color-onlyper ottenere l’evidenziazione di delta ingit add -pe altri comandi Git interattivi. -
Combina con alias Git: Crea alias Git che includono opzioni specifiche di delta per attività comuni, come
git config --global alias.review 'diff --color-moved'per flussi di lavoro di revisione standardizzati.
Risoluzione dei problemi
| Problema | Soluzione |
|---|---|
| Delta not being used for diffs | Verify configuration with git config --global core.pager - should return delta. If not, run git config --global core.pager delta |
| Colors not displaying correctly | Check terminal supports 24-bit color. Set COLORTERM=truecolor environment variable. Try different syntax themes with delta --show-syntax-themes |
| Side-by-side view is garbled | Terminal 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 showing | Enable explicitly: git config --global delta.line-numbers true. Check that feature isn’t disabled in a custom feature set |
| Syntax highlighting not working | Verify file extension is recognized with delta --list-languages. Force language with --language option or check syntax-theme setting |
| Delta not working in git add -p | Set interactive diff filter: git config --global interactive.diffFilter "delta --color-only". The --color-only flag is essential for interactive mode |
| Pager quits immediately | Adjust 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 diffs | Disable side-by-side mode, reduce max-line-length, or use --syntax-theme none to disable syntax highlighting for faster rendering |
| Hyperlinks not clickable | Ensure terminal supports hyperlinks (iTerm2, kitty, Alacritty). Enable with git config --global delta.hyperlinks true |
| Configuration not taking effect | Check for conflicting configs: `git config —list |
| Unicode characters displaying incorrectly | Ensure terminal uses UTF-8 encoding. Set LC_ALL=en_US.UTF-8 or similar locale. Check font supports Unicode characters used in decorations |