Elencare tutti gli sviluppatori in un progetto in Git


207

È possibile elencare tutti gli utenti che hanno contribuito a un progetto (utenti che hanno eseguito il commit) in Git?

Altre statistiche?

Risposte:


390

Per mostrare tutti gli utenti e le e-mail e il numero di commit nella sezione CORRENTE:

git shortlog --summary --numbered --email

O semplicemente:

git shortlog -sne

Per mostrare gli utenti di tutti i rami (non solo quelli nel ramo corrente) devi aggiungere --allflag:

git shortlog -sne --all

3
Si noti che se si desidera utilizzare questo comando all'interno di uno script o qualcosa di simile a "ant", è necessario specificare una revisione o non viene emesso nulla. Per la revisione attuale puoi usare HEAD:git shortlog -sn HEAD
Majenko

59
Per ottenere anche indirizzi e-mail, aggiungere -e.
mic_e

10
Per mostrare gli utenti di tutti i rami (non solo quelli del ramo corrente) devi aggiungere la --allbandiera
Gian Marco Gherardi,

3
cosa succede se non desidero il numero di commit?
Wearybands,

1
Questo è ottimo anche per verificare chi ha toccato un file specifico anziché l'intero progetto. git shortlog --summary --numbered <pathToFile>
jxramos,

40

Se vuoi essere più specifico nell'elenco (trova un elenco di committer e autore unici), puoi usare git log:

git log --pretty="%an %ae%n%cn %ce" | sort | uniq
  • %an nome dell'autore
  • %ae email dell'autore
  • %n nuova linea
  • %cn nome del committer
  • %ce email committer

Altri segnaposto sono descritti nella bella documentazione stampata digit log .


Penso che %nnon abbia troppo senso in combinazione con (basato sulla linea) sort, vero? La riga registra l'autore / nome del committer / e-mail in righe separate, ma ordina su tutto l'output ...
ssc

L'email del committer @ssc può essere diversa dall'email dell'autore. % n è per la nuova linea per trovare quelle differenze
Guillaume Vincent,

19

Puoi provare questo:

git log | grep Author: | sort | uniq

1
Questo è il comando più utile per chiunque sia interessato ad aggiornare il proprio file .mailmap!
Ahi Tuna,

7

(utenti che hanno eseguito il commit)

Nota: per impostazione predefinita, i git shortloggruppi eseguono il commit degli autori .

Se devi raggrupparli per committer, avrai bisogno di Git 2.12 (Q1 2017)

git shortlog -snc

Vedi commit 03f4082 (16 dic 2016) di Jeff King ( peff) .
Vedi commit fbfda15 (11 ott 2016) di Linus Torvalds ( torvalds) .
(Unita da Junio ​​C Hamano - gitster- in commit ad1b4e2 , 27 dic 2016)

Lo stesso Linus Torvalds introduce questa funzione:

shortlog: raggruppa per informazioni committer

In alcune situazioni potresti voler raggruppare i commit non per autore, ma per committer.

Ad esempio, quando volevo solo cercare ciò che mi manca ancora linux-nextnella finestra di unione corrente, non mi interessa molto di chi ha scritto una patch, come quello da git treecui proviene, che generalmente si riduce a "chi ha commesso esso".

Quindi fai in modo che git shortlog prenda un'opzione " -c" o " --committer" per passare al raggruppamento.



1

Non ho ancora avuto modo di provarlo da solo, ma questo sembra davvero bello per le statistiche di progetto per un repository Git: https://github.com/visionmedia/git-extras

Dai un'occhiata al bin catalogo per vedere i diversi script.

Ad esempio, lo git-countscript (conteggio commit per committer):

git shortlog -n $@ | grep "):" | sed 's|:||'

1
git shortlog -ns sembra meno hacker
TomDLT

@TomDLT da quando l'ho pubblicato 4 anni fa, questo script di esempio in git-extra è cambiato. Ma penso che il mio consiglio di guardare gli script git da progetti come git-extra o dai dotfile delle persone sia ancora un grande consiglio. Se stai cercando interessanti comandi git, consiglierei anche i dotfile di Gary Bernhardt: github.com/garybernhardt/dotfiles/tree/master/bin
Daniel Lee

1

Grandi risposte di @ pedro-nascimento, di @mic_e e altri già risolvono il problema.

Inoltre, puoi aggiungere la seguente riga alla tua .gitconfig

contributors = shortlog -e --summary --numbered

o nel tipo di shell

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

E dopo puoi semplicemente invocare: git contributors


1
dovresti probabilmente aggiungere una nota che dopo aver impostato questo puoi semplicemente chiamaregit contributors
lohfu

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.