Saltar a contenido

Hoja de Referencia de Delta

Instalación

Platform 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
## Comandos Básicos
Comando Descripción
git config --global core.pager delta Establecer delta como paginador predeterminado de Git
git diff Ver cambios sin preparar con delta
git diff --cached Ver cambios preparados con delta
git diff path/to/file.py Ver cambios en archivo específico
git diff main Comparar rama actual con main
git diff branch1..branch2 Comparar dos ramas
git show HEAD Mostrar último commit con diff
git show abc123 Mostrar commit específico con diff
git log -p Ver historial de commits con diffs
git diff commit1 commit2 Comparar dos commits específicos
diff file1.txt file2.txt \ | delta Canalizar la salida estándar diff a delta
delta file1.txt file2.txt Comparar archivos directamente con delta
delta --show-syntax-themes Mostrar todos los temas de sintaxis disponibles
delta --list-languages Enumerar todos los lenguajes de programación compatibles
delta --show-config Mostrar configuración delta actual
git blame file.py Ver git blame con formato delta
git grep "function" \ | delta Salida de grep mejorada con delta
git diff --stat Mostrar estadísticas de diferencias con delta
git diff -w \ | delta Ver diff ignorando cambios de espacios en blanco
delta changes.diff Ver un archivo diff guardado con delta
## Uso Avanzado
Comando Descripción
git diff \ | delta --side-by-side Habilitar vista de diferencias lado a lado
git diff \ | delta --side-by-side --width 200 Lado a lado con ancho personalizado
git diff \ | delta --line-numbers Habilitar números de línea en la salida diff
git diff \ | delta --syntax-theme Monokai Usar tema de sintaxis específico temporalmente
git diff \ | delta --language python Forzar resaltado de sintaxis de lenguaje específico
git config --global delta.side-by-side true Habilitar el modo de pantalla dividida globalmente
git config --global delta.line-numbers true Habilitar números de línea globalmente
git config --global delta.navigate true Habilitar modo de navegación para saltar entre archivos
git config --global delta.hyperlinks true Habilitar hipervínculos de ruta de archivo clicables
git config --global diff.colorMoved default Resaltar bloques de código movidos
git config --global pager.blame delta Usa delta para la salida de git blame
git config --global pager.grep delta Usa delta para la salida de git grep
git config --global interactive.diffFilter "delta --color-only" Usa delta en comandos interactivos de Git
git blame -L 10,20 file.py Ver blame para rango de líneas específico con delta
git diff --word-diff Mostrar diferencias a nivel de palabra con delta
git config --global delta.pager "less -RFX" Personalizar comportamiento del pager
git config --global delta.features "line-numbers decorations" Habilitar múltiples características a la vez
git diff --ignore-space-at-eol \ | delta Ignorar espacios en blanco al final de la línea
git config --global delta.max-line-length 512 Establecer longitud máxima de línea para mostrar
git config --global delta.tabs 4 Establecer ancho de pestaña para mostrar
## Configuración

Delta se configura a través del sistema de configuración de Git. La configuración puede establecerse globalmente (~/.gitconfig) o por repositorio (.git/config).

Configuración Básica

[core]
    pager = delta

[interactive]
    diffFilter = delta --color-only

[delta]
    navigate = true
    line-numbers = true
    side-by-side = true

Ejemplo de Configuración Completa

[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

Conjuntos de Características Personalizadas

Crear perfiles de configuración reutilizables:

[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

Temas de Sintaxis Populares

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

Casos de Uso Comunes

Caso de Uso 1: Flujo de Trabajo de Revisión de Código Diario

# 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

Caso de Uso 2: Comparando Ramas para Fusionar

# 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

Caso de Uso 3: Investigando el Historial de Código

# 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

Caso de Uso 4: Resolución de Conflictos de Fusión

# 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

Caso de Uso 5: Creando Informes de Diferencias Legibles

# 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

Mejores Prácticas

  • Configurar delta globalmente: Configurar git config --global core.pager deltauna vez para usar delta en todos los repositorios, asegurando una experiencia consistente de visualización de diferencias.

  • Habilitar modo de navegación: Usar git config --global delta.navigate truepara saltar rápidamente entre archivos en diffs grandes usando las teclas n(siguiente) y N(anterior).

  • Elegir temas apropiados: Seleccionar temas de sintaxis que coincidan con el fondo de su terminal (oscuro/claro) y proporcionen buen contraste. Probar con

Would you like me to fill in the remaining placeholders with specific translations or leave them as-is?delta --show-syntax-themespara previsualizar todas las opciones.

  • Usar lado a lado para revisiones: Habilitarside-by-side = truepara revisiones de código y comparaciones de merge, pero desactivarlo para comprobaciones rápidas en terminales estrechas para evitar problemas de ajuste de línea.

  • Configurar números de línea estratégicamente: Habilitar números de línea para depuración y revisiones de código (line-numbers = true), pero considerar desactivarlos para diffs simples para reducir el desorden visual.

  • Aprovechar la detección de código movido: Establecerdiff.colorMoved = defaultpara resaltar código que ha sido movido en lugar de cambiado, haciendo las revisiones de refactorización mucho más claras.

  • Crear conjuntos de características personalizados: Definir múltiples configuraciones delta para diferentes flujos de trabajo (por ejemplo, "review", "quick-check", "presentation") y cambiar entre ellos según sea necesario usando la opciónfeatures.

  • Optimizar para su flujo de trabajo: Ajustarwidth,tabs, ywrap-max-linesconfiguraciones basadas en el tamaño típico de su terminal y estándares de codificación para prevenir saltos de línea incómodos.

  • Usar con comandos interactivos: Configurarinteractive.diffFilter = delta --color-onlypara obtener el resaltado de delta engit add -py otros comandos interactivos de Git.

  • Combinar con alias de Git: Crear alias de Git que incluyan opciones específicas de delta para tareas comunes, comogit config --global alias.review 'diff --color-moved'para flujos de trabajo de revisión estandarizados.

Resolución de problemas

Problema Solución
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 | grep delta. Repository-level configs override global. Use --show-config to see active settings
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