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?

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

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 .


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

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.



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|:||'

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


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.