Listar todos los desarrolladores en un proyecto en Git

207

¿Es posible enumerar todos los usuarios que contribuyeron a un proyecto (usuarios que han realizado confirmaciones) en Git?

¿Alguna estadística adicional?

Ritam Nemira
fuente

Respuestas:

390

Para mostrar todos los usuarios y correos electrónicos, y el número de confirmaciones en la rama ACTUAL:

git shortlog --summary --numbered --email

O simplemente:

git shortlog -sne

Para mostrar a los usuarios de todas las sucursales (no solo las de la sucursal actual) debe agregar una --allbandera:

git shortlog -sne --all
Pedro Nascimento
fuente
3
Tenga en cuenta que si desea utilizar este comando desde un script, o algo así como "hormiga", debe especificar una revisión o no generará nada. Para la revisión actual puede usar HEAD:git shortlog -sn HEAD
Majenko
59
Para obtener también direcciones de correo electrónico, agregue -e.
mic_e
10
Para mostrar a los usuarios de todas las sucursales (no solo las de la sucursal actual) debe agregar una --allbandera
Gian Marco Gherardi
3
¿Qué pasa si no quiero el número de confirmaciones?
Wearybands
1
Esto también es excelente para verificar quién tocó un archivo específico en lugar de todo el proyecto. git shortlog --summary --numbered <pathToFile>
jxramos
40

Si desea ser más específico en la lista (encontrar una lista de autor y autor únicos), puede usar git log:

git log --pretty="%an %ae%n%cn %ce" | sort | uniq
  • %an nombre del autor
  • %ae correo electrónico del autor
  • %n nueva línea
  • %cn nombre del confirmador
  • %ce correo electrónico de confirmación

Otros marcadores de posición se describen en la bonita documentación impresa degit log .

Guillaume Vincent
fuente
Creo %nque no tiene mucho sentido en combinación con (basado en líneas) sort, ¿verdad? La línea registra el autor / nombre del confirmador / correo electrónico en líneas separadas, pero se clasifica en toda la salida ...
SSC
El correo electrónico @ssc committer puede ser diferente del correo electrónico del autor. % n es para una nueva línea para encontrar esas diferencias
Guillaume Vincent
19

Puedes probar esto:

git log | grep Author: | sort | uniq
Santa Zhang
fuente
1
¡Este es el comando más útil para cualquier persona interesada en actualizar su archivo .mailmap!
Ahi Tuna
7

(usuarios que han realizado confirmaciones)

Nota: por defecto, los git shortloggrupos se comprometen por autores .

Si necesita agruparlos por committers, necesitará Git 2.12 (Q1 2017)

git shortlog -snc

Ver commit 03f4082 (16 de diciembre de 2016) por Jeff King ( peff) .
Ver commit fbfda15 (11 de octubre de 2016) por Linus Torvalds ( torvalds) .
(Fusionada por Junio ​​C Hamano - gitster- en commit ad1b4e2 , 27 dic 2016)

El propio Linus Torvalds presenta esta característica:

shortlog: información de grupo por confirmador

En algunas situaciones, es posible que desee agrupar las confirmaciones no por autor, sino por confirmador.

Por ejemplo, cuando solo quería buscar lo que todavía me falta linux-nexten la ventana de fusión actual, no me importa tanto quién escribió un parche, git treesino de qué vino, que generalmente se reduce a "quién cometió eso".

Entonces, haga que git shortlog tome una opción " -c" o " --committer" para cambiar la agrupación a eso.

VonC
fuente
2

Otra opción puede ser:

git log --format='%aN' | sort -u
ΦXocę 웃 Пepeúpa ツ
fuente
1

Todavía no he podido probarlo, pero esto se ve muy bien para las estadísticas del proyecto para un repositorio de Git: https://github.com/visionmedia/git-extras

Revisar la bin catálogo para ver los diferentes guiones.

Por ejemplo, el git-countscript (número de confirmaciones por confirmador):

git shortlog -n $@ | grep "):" | sed 's|:||'
Daniel Lee
fuente
1
git shortlog -ns parece menos hackish
TomDLT
@TomDLT desde que publiqué esto hace 4 años, este script de ejemplo en git-extras ha cambiado. Pero creo que mi consejo para mirar los guiones git de proyectos como git-extras o de los archivos de puntos de la gente sigue siendo un gran consejo. Si está buscando comandos git interesantes, también recomendaría los archivos de puntos de Gary Bernhardt: github.com/garybernhardt/dotfiles/tree/master/bin
Daniel Lee
1

Grandes respuestas de @ pedro-nascimento, de @mic_e y otros ya resuelven el problema.

Además, puede agregar la siguiente línea a su .gitconfig

contributors = shortlog -e --summary --numbered

o en tipo de concha

git config --global alias.contributors 'shortlog -e --summary --numbered'

Y después de eso, simplemente puede invocar: git contributors

adem
fuente
1
probablemente deberías agregar una nota que luego de configurar esto simplemente puedes llamargit contributors
lohfu