Salta ai contenuti

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?

PiattaformaComando
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

Basic Commands

ComandoDescrizione
git config --global core.pager deltaImposta delta come pager predefinito di Git
git diffVisualizza modifiche non in staging con delta
git diff --cachedVisualizza le modifiche in staging con delta
git diff path/to/file.pyVisualizza modifiche in file specifico
git diff mainConfronta il branch corrente con main
git diff branch1..branch2Confronta due branch
git show HEADMostra ultimo commit con diff
git show abc123Mostra commit specifico con diff
git log -pVisualizza la cronologia dei commit con le differenze
git diff commit1 commit2Confronta due commit specifici
`diff file1.txt file2.txt \delta`
delta file1.txt file2.txtConfronta file direttamente con delta
delta --show-syntax-themesMostra tutti i temi di sintassi disponibili
delta --list-languagesElenca tutti i linguaggi di programmazione supportati
delta --show-configVisualizza configurazione delta corrente
git blame file.pyVisualizza git blame con formattazione delta
`git grep “function” \delta`
git diff --statMostra statistiche diff con delta
`git diff -w \delta`
delta changes.diffVisualizza un file diff salvato con delta

Advanced Usage

ComandoDescrizione
`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 trueAbilita modalità affiancata globalmente
git config --global delta.line-numbers trueAbilita numeri di riga globalmente
git config --global delta.navigate trueAbilita la modalità di navigazione per spostarsi tra i file
git config --global delta.hyperlinks trueAbilita hyperlink cliccabili per percorsi file
git config --global diff.colorMoved defaultEvidenzia blocchi di codice spostati
git config --global pager.blame deltaUsa delta per l’output di git blame
git config --global pager.grep deltaUsa 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.pyVisualizza blame per un intervallo di righe specifico con delta
git diff --word-diffMostra 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 512Imposta la lunghezza massima della riga per la visualizzazione
git config --global delta.tabs 4Imposta 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
  • Monokai Extended
  • Nord
  • Dracula
  • gruvbox-dark
  • gruvbox-light
  • Solarized (dark)
  • Solarized (light)
  • GitHub
  • OneHalfDark
  • OneHalfLight

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 delta once to use delta for all repositories, ensuring consistent diff viewing experience.

  • Enable navigation mode: Use git config --global delta.navigate true to quickly jump between files in large diffs using n (next) and N (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, e wrap-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 in git 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

ProblemaSoluzione
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