Tabla de contenido

  1. Git log básico
  2. Filtros esenciales
  3. Formato personalizado (pretty format)
  4. Visualización con —graph
  5. Estadísticas con —stat y —shortlog
  6. Búsqueda con git log —grep
  7. Rangos y revisiones
  8. Alias avanzados
  9. Casos de uso reales

1. Git log básico {#basico}

git log

Muestra el historial de commits del más reciente al más antiguo:

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t
Author: Abraham Pech <abraham@8devmx.com>
Date:   Thu Jul 2 16:45:00 2026 -0600

    feat: add github hidden features blog post

Opciones esenciales:

# Mostrar solo los últimos N commits
git log -5

# Mostrar solo resumen (una línea por commit)
git log --oneline

# Incluir el diff de cada commit
git log -p

# No mostrar merge commits
git log --no-merges

2. Filtros esenciales {#filtros}

# Por autor
git log --author="Abraham"
git log --author="8devmx"

# Por fecha
git log --since="2026-06-01"
git log --until="2026-07-01"
git log --since="2 weeks ago"
git log --after="2026-06-01" --before="2026-07-02"

# Por archivo o directorio
git log -- src/content/blog/
git log -- README.md

# Por rama
git log main..feature-x
git log --all

# Con mensaje específico
git log --grep="feat:"
git log --grep="fix:"

# Por rango de fechas (una línea)
git log --oneline --since="2026-06-01" --until="2026-07-01"

3. Formato personalizado (pretty format) {#pretty}

git log permite personalizar completamente la salida:

# Formato predefinido
git log --pretty=oneline
git log --pretty=short
git log --pretty=medium   # default
git log --pretty=full
git log --pretty=fuller

# Formato personalizado
git log --pretty=format:"%h - %an, %ar : %s"

Placeholders más útiles:

%h      → Hash corto del commit
%H      → Hash completo
%an     → Nombre del autor
%ae     → Email del autor
%ad     → Fecha (formato editable)
%ar     → Fecha relativa ("2 days ago")
%s      → Mensaje del commit
%d      → Nombres de ramas/tags
%N      → Notas del commit

Ejemplos de formatos:

# Estilo gráfico en árbol con fechas
git log --graph --pretty=format:'%C(yellow)%h%Creset %C(blue)%ad%Creset %C(green)%an%Creset %s%d' --date=short

# Con colores automáticos
git log --graph --pretty=format:'%C(auto)%h %d %s %C(black)%C(bold)%cr% Creset'

# Compacto con hash + mensaje + fecha relativa
git log --pretty=format:'%C(yellow)%h%Creset %s %C(red)(%cr)%Creset' -20

4. Visualización con —graph {#graph}

La combinación más popular:

git log --graph --oneline --all

# Más detallado
git log --graph --pretty=format:'%C(yellow)%h%Creset %C(blue)%ad%Creset %s %C(green)(%an)%Creset' --date=short

# Con decoración de ramas
git log --graph --oneline --all --decorate

5. Estadísticas con —stat y —shortlog {#stats}

# Archivos modificados por commit
git log --stat

# Número de cambios por commit (+inserciones, -borrados)
git log --shortstat

# Conteo de commits por autor
git shortlog -sn

# Conteo por autor con mensajes
git shortlog -sne --since="2026-01-01"

# Contribución por archivo
git log --format='%an' -- src/index.js | sort | uniq -c | sort -rn

6. Búsqueda con git log —grep {#grep}

# Buscar commits por mensaje
git log --grep="SEO"
git log --grep="fix" -i    # case insensitive
git log --grep="feat:" --grep="blog" --all-match

# Buscar cambios en el código (no en el mensaje)
git log -S"console.log"             # commits que agregaron/quitaron esa string
git log -G"function\s+\w+"          # commits que coinciden con regex
git log -S"fetch" -- src/           # en directorio específico

# Buscar cambios en archivos
git log --oneline -- src/theme.css

7. Rangos y revisiones {#rangos}

# Entre dos ramas
git log --oneline main..feature-x

# Entre dos tags
git log --oneline v1.0..v2.0

# Desde un commit hasta HEAD
git log --oneline abc123..HEAD

# Excluyendo una rama (commits en dev que no están en main)
git log --oneline ^main dev

# Commits de los últimos 3 días
git log --oneline --since="3 days ago"

# Ayer
git log --oneline --since="yesterday" --until="today"

8. Alias avanzados {#alias}

Agrega estos alias a tu ~/.gitconfig:

[alias]
  # Log estilizado con gráfico
  lg = log --graph --oneline --all --decorate

  # Log detallado con fechas
  lgd = log --graph --pretty=format:'%C(yellow)%h%Creset %C(blue)%ad%Creset %s %C(green)(%an)%Creset' --date=short

  # Log con estadísticas
  lgs = log --stat --summary

  # Log con búsqueda de código
  lgc = log -S

  # Commits de hoy
  today = log --oneline --since="midnight"

  # Commits recientes con autores
  lga = log --oneline --all --graph --decorate --author

  # Árbol completo con colores
  tree = log --graph --oneline --all --decorate --simplify-by-decoration

9. Casos de uso reales {#casos}

# ¿Qué cambió en este archivo la última semana?
git log --oneline --since="1 week ago" -- src/index.js

# ¿Quién tocó esta función y cuándo?
git log -S"handleSubmit" --oneline --author

# ¿Qué ramas tienen commits que main no tiene?
git log --oneline main..feature-x
git log --oneline main..feature-y

# ¿Cuántos commits hizo cada persona este mes?
git shortlog -sn --since="1 month"

# Ver el PR número 42 resumido
git log --oneline --grep="#42"

# Comparar dos releases
git log --oneline v1.0.0..v2.0.0
git log --stat v1.0.0..v2.0.0

Dominar git log te da superpoderes para navegar cualquier código sin depender de la UI de GitHub.

Artículos relacionados: guía definitiva de Git y GitHub 2026, Git rebase, Git stash.