Lister tous les développeurs sur un projet dans Git

207

Est-il possible de lister tous les utilisateurs qui ont contribué à un projet (utilisateurs qui ont fait des commits) dans Git?

Des statistiques supplémentaires?

Ritam Nemira
la source

Réponses:

390

Pour afficher tous les utilisateurs et e-mails, ainsi que le nombre de validations dans la branche ACTUELLE:

git shortlog --summary --numbered --email

Ou simplement:

git shortlog -sne

Pour afficher les utilisateurs de toutes les branches (pas seulement ceux de la branche actuelle), vous devez ajouter un --allindicateur:

git shortlog -sne --all
Pedro Nascimento
la source
3
Notez que si vous souhaitez utiliser cette commande à partir d'un script, ou quelque chose comme "ant", vous devez spécifier une révision ou elle ne produit rien. Pour la révision actuelle, vous pouvez utiliser HEAD:git shortlog -sn HEAD
Majenko
59
Pour obtenir également des adresses e-mail, ajoutez -e.
mic_e
10
Pour afficher les utilisateurs de toutes les branches (pas seulement ceux de la branche actuelle), vous devez ajouter un --allindicateur
Gian Marco Gherardi
3
que faire si je ne veux pas le nombre de commits?
Wearybands
1
C'est également idéal pour vérifier qui a touché un fichier spécifique plutôt que l'ensemble du projet. git shortlog --summary --numbered <pathToFile>
jxramos
40

Si vous voulez être plus précis dans la liste (trouver une liste de committer unique et d'auteur), vous pouvez utiliser git log:

git log --pretty="%an %ae%n%cn %ce" | sort | uniq
  • %an nom de l'auteur
  • %ae email de l'auteur
  • %n nouvelle ligne
  • %cn nom du committer
  • %ce e-mail du committer

D'autres espaces réservés sont décrits dans la jolie documentation imprimée degit log .

Guillaume Vincent
la source
Je pense que cela %nn'a pas trop de sens en combinaison avec (basé sur la ligne) sort, n'est-ce pas? La ligne enregistre le nom / e-mail de l'auteur / committer sur des lignes distinctes, mais trie l'ensemble de la sortie ...
ssc
L'email de @ssc committer peut être différent de l'email de l'auteur. % n est pour une nouvelle ligne pour trouver ces différences
Guillaume Vincent
19

Vous pouvez essayer ceci:

git log | grep Author: | sort | uniq
Santa Zhang
la source
1
C'est la commande la plus utile pour quiconque souhaite mettre à jour son fichier .mailmap!
Ahi Tuna
7

(utilisateurs ayant effectué des validations)

Remarque: par défaut, les git shortloggroupes sont validés par les auteurs .

Si vous devez les regrouper par committers, vous aurez besoin de Git 2.12 (Q1 2017)

git shortlog -snc

Voir commit 03f4082 (16 décembre 2016) de Jeff King ( peff) .
Voir commit fbfda15 (11 octobre 2016) par Linus Torvalds ( torvalds) .
(Fusionné par Junio ​​C Hamano - gitster- dans commit ad1b4e2 , 27 déc 2016)

Linus Torvalds lui-même présente cette fonctionnalité:

shortlog: informations groupées par committer

Dans certaines situations, vous souhaiterez peut-être regrouper les validations non pas par auteur, mais par committer à la place.

Par exemple, lorsque je voulais simplement rechercher ce qui me manque encore linux-nextdans la fenêtre de fusion actuelle, je me fiche de savoir qui a écrit un correctif, git treemais de son origine, qui se résume généralement à "qui a commis il".

Donc, faites en sorte que git shortlog prenne une option " -c" ou " --committer" pour basculer le regroupement vers cela.

VonC
la source
2

Une autre option peut être:

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

Je ne l'ai pas encore testé moi-même, mais cela semble vraiment sympa pour les statistiques de projet pour un référentiel Git: https://github.com/visionmedia/git-extras

Consultez le bincatalogue pour voir les différents scripts.

Par exemple, le git-countscript (nombre de validations par committer):

git shortlog -n $@ | grep "):" | sed 's|:||'
Daniel Lee
la source
1
git shortlog -ns semble moins hackish
TomDLT
@TomDLT depuis que j'ai posté cela il y a 4 ans, cet exemple de script dans git-extras a changé. Mais je pense que mon conseil pour regarder les scripts git de projets comme git-extras ou des fichiers dot des gens est toujours un excellent conseil. Si vous recherchez des commandes git intéressantes, je recommanderais également les dotfiles de Gary Bernhardt: github.com/garybernhardt/dotfiles/tree/master/bin
Daniel Lee
1

Les bonnes réponses de @ pedro-nascimento, de @mic_e et d'autres résolvent déjà le problème.

De plus, vous pouvez ajouter la ligne suivante à votre .gitconfig

contributors = shortlog -e --summary --numbered

ou en coquille

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

Et après cela, vous pouvez simplement invoquer: git contributors

adem
la source
1
vous devriez probablement ajouter une note qui après avoir défini cela, vous pouvez simplement appelergit contributors
lohfu