Sinopsis
git shortlog [-n] [-s] [-e] [<revision-range>]
Descripción
El comando git shortlog agrupa commits por autor, produciendo resúmenes concisos adecuados para notas de release, listas de contribuyentes y vistazos rápidos de quién hizo qué. Por defecto imprime el nombre de cada autor seguido de las líneas de asunto de sus commits en el rango dado.
Modos comunes incluyen -sn (resumen, ordenado por conteo) para listas de top contribuyentes y --no-merges para ignorar merge commits. Combinado con un rango como v1.0..v2.0, shortlog es la forma más rápida de redactar créditos de notas de release.
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 |
|---|---|
-s, --summary | Show only counts per author. |
-n, --numbered | Sort authors by commit count. |
-e, --email | Include author email addresses. |
--no-merges | Exclude merge commits. |
--group=<type> | Group by author, committer, or trailer. |
-w[<width>] | Wrap subject lines. |
Ejemplos
git shortlog -sn
# Top contributors all-time, with counts
git shortlog -sne v1.0..v2.0
# Contributors between two releases, with emails
git shortlog --no-merges HEAD~50..HEAD
# Subjects grouped by author for the last 50 commits
git shortlog --group=trailer:co-authored-by
# Group by Co-authored-by trailer
Errores comunes
Multiple commit identities for the same person (different emails, different name capitalizations) inflate the contributor count. A .mailmap file at the repo root canonicalizes them. Forgetting --no-merges can attribute many merge commits to project maintainers.
Comandos relacionados
git log, git blame, git describe, git tag