Tabla de contenido
- Git log básico
- Filtros esenciales
- Formato personalizado (pretty format)
- Visualización con —graph
- Estadísticas con —stat y —shortlog
- Búsqueda con git log —grep
- Rangos y revisiones
- Alias avanzados
- 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.