Listen Sie alle Entwickler eines Projekts in Git auf

204

Ist es möglich, alle Benutzer, die zu einem Projekt beigetragen haben (Benutzer, die Commits durchgeführt haben), in Git aufzulisten?

Irgendwelche zusätzlichen Statistiken?

Ritam Nemira
quelle

Antworten:

385

So zeigen Sie alle Benutzer und E-Mails sowie die Anzahl der Commits im CURRENT-Zweig an:

git shortlog --summary --numbered --email

Oder einfach:

git shortlog -sne

Um Benutzer aus allen Zweigen anzuzeigen (nicht nur aus denen im aktuellen Zweig), müssen Sie das folgende --allFlag hinzufügen :

git shortlog -sne --all
Pedro Nascimento
quelle
3
Beachten Sie, dass Sie eine Revision angeben müssen, wenn Sie diesen Befehl in einem Skript oder in "ant" verwenden möchten, da sonst nichts ausgegeben wird. Für die aktuelle Revision können Sie HEAD verwenden:git shortlog -sn HEAD
Majenko
59
Fügen Sie hinzu, um auch E-Mail-Adressen zu erhalten -e.
mic_e
10
Um Benutzer aus allen Filialen (nicht nur aus der aktuellen Filiale) anzuzeigen, müssen Sie die --allFlagge hinzufügen
Gian Marco Gherardi
3
Was ist, wenn ich die Anzahl der Commits nicht möchte?
Wearybands
1
Dies ist auch ideal, um zu überprüfen, wer eine bestimmte Datei und nicht das gesamte Projekt berührt hat. git shortlog --summary --numbered <pathToFile>
Jxramos
40

Wenn Sie in der Liste genauer sein möchten (eine Liste mit eindeutigen Committern und Autoren finden), können Sie Folgendes verwenden git log:

git log --pretty="%an %ae%n%cn %ce" | sort | uniq
  • %an Autorenname
  • %ae Autor E-Mail
  • %n Neue Zeile
  • %cn Name des Committers
  • %ce Committer-E-Mail

Andere Platzhalter sind in der hübschen Druckdokumentation von beschriebengit log .

Guillaume Vincent
quelle
Ich denke, das %nmacht in Kombination mit (zeilenbasiert) nicht allzu viel Sinn sort, oder? Die Zeile protokolliert Autor / Committer-Name / E-Mail in separaten Zeilen, sortiert aber über die gesamte Ausgabe ...
ssc
@ssc Committer-E-Mail kann sich von Autor-E-Mail unterscheiden. % n ist für neue Linie, um diese Unterschiede zu finden
Guillaume Vincent
19

Sie können dies versuchen:

git log | grep Author: | sort | uniq
Santa Zhang
quelle
1
Dies ist der nützlichste Befehl für alle, die ihre .mailmap-Datei aktualisieren möchten!
Ahi Thunfisch
7

(Benutzer, die Commits durchgeführt haben)

Hinweis: Standardmäßig werden git shortlogGruppen von Autoren festgeschrieben .

Wenn Sie sie nach Committern gruppieren müssen, benötigen Sie Git 2.12 (Q1 2017).

git shortlog -snc

Siehe Commit 03f4082 (16. Dezember 2016) von Jeff King ( peff) .
Siehe Commit fbfda15 (11. Oktober 2016) von Linus Torvalds ( torvalds) .
(Zusammengeführt von Junio ​​C Hamano - gitster- in Commit ad1b4e2 , 27. Dezember 2016)

Linus Torvalds selbst stellt diese Funktion vor:

shortlog: Informationen nach Committer gruppieren

In einigen Situationen möchten Sie die Commits möglicherweise nicht nach Autor, sondern nach Committer gruppieren.

Wenn ich zum Beispiel nur nachsehen wollte, was mir linux-nextim aktuellen Zusammenführungsfenster noch fehlt , ist es mir weniger wichtig, wer einen Patch geschrieben hat, als vielmehr git tree, woher er stammt, was im Allgemeinen darauf hinausläuft, wer sich verpflichtet hat es".

Lassen Sie also git shortlog die Option " -c" oder " --committer" wählen, um die Gruppierung darauf umzuschalten.

VonC
quelle
2

Eine andere Option kann sein:

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

Ich bin noch nicht dazu gekommen, es selbst zu testen, aber das sieht für Projektstatistiken für ein Git-Repository wirklich gut aus: https://github.com/visionmedia/git-extras

Schauen Sie sich den binKatalog an, um die verschiedenen Skripte zu sehen.

Zum Beispiel das git-countSkript (Commit-Anzahl pro Committer):

git shortlog -n $@ | grep "):" | sed 's|:||'
Daniel Lee
quelle
1
Git Shortlog -ns scheint weniger hackisch
TomDLT
@TomDLT Seit ich dies vor 4 Jahren gepostet habe, hat sich dieses Beispielskript in git-extras geändert. Aber ich denke, mein Rat, sich Git-Skripte aus Projekten wie Git-Extras oder aus Dotfiles von Leuten anzusehen, ist immer noch ein guter Rat. Wenn Sie nach interessanten Git-Befehlen suchen, würde ich auch Gary Bernhardts Dotfiles empfehlen: github.com/garybernhardt/dotfiles/tree/master/bin
Daniel Lee
1

Tolle Antworten von @ pedro-nascimento, von @mic_e und anderen lösen das Problem bereits.

Darüber hinaus können Sie die folgende Zeile zu Ihrer hinzufügen .gitconfig

contributors = shortlog -e --summary --numbered

oder in Shell-Typ

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

Und danach können Sie einfach aufrufen: git contributors

adem
quelle
1
Sie sollten wahrscheinlich einen Hinweis hinzufügen, dass Sie nach dem Einstellen einfach anrufen könnengit contributors
lohfu