Sinopsis
git log [<options>] [<revision-range>] [[--] <path>...]
Descripción
El comando git log muestra el historial de commits alcanzable desde una o más refs (predeterminado HEAD). Es una de las herramientas más flexibles de Git, soportando filtrado por autor, fecha, contenido del mensaje, paths de archivo y más. Combinado con opciones de formato, puede producir salida adecuada para changelogs, auditorías y arqueología de código.
Idiomas útiles incluyen git log --oneline --graph --decorate --all para una vista visual y compacta del historial entero, y git log -p para ver patches en línea. Argumentos pathspec restringen el log a commits que tocaron archivos específicos.
En el uso diario, este comando se integra estrechamente con alias de shell, plugins de editor e integración continua. Los usuarios avanzados a menudo añaden alias que combinan los flags que siempre pasan. El formato de salida puede personalizarse vía configuración de Git. Cuando algo sale mal, ejecuta el comando con GIT_TRACE=1 para revelar las llamadas plumbing subyacentes.
Entender cómo este comando interactúa con el resto del modelo de datos de Git rinde dividendos. Cada comando opera sobre algún subconjunto de las piezas (objetos, index, refs, árbol de trabajo), y saber cuáles toca ayuda a predecir resultados y a recuperarse de errores.
Opciones comunes
| Opción | Descripción |
|---|---|
--oneline | One commit per line, abbreviated SHA + subject. |
--graph | ASCII art of branch and merge structure. |
--all | Include all refs, not just HEAD. |
-p, --patch | Show diffs alongside each commit. |
--stat | Show changed-file statistics. |
--author=<pattern> | Filter by author. |
--since / --until | Filter by date. |
-S <string> | Pickaxe: find commits that add/remove this string. |
--follow | Track a single file's history across renames. |
Ejemplos
git log --oneline --graph --decorate --all
# Compact visual history of everything
git log -p src/auth.py
# Full diffs of every commit touching auth.py
git log -S "TODO" --since="2 weeks ago"
# Find recent commits that added or removed "TODO"
git log --author="alice" --pretty=format:"%h %s" -n 20
# Last 20 commits by alice in custom format
Errores comunes
Forgetting that git log file.txt only shows commits where file.txt existed — use --follow if it has been renamed. Over-relying on --grep when you really want -S (which searches diffs, not messages). And on huge repos, git log -p without a path can produce gigabytes of output.
Comandos relacionados
git show, git blame, git shortlog, git diff