Lista wszystkich programistów projektu Git

206

Czy można wymienić wszystkich użytkowników, którzy przyczynili się do projektu (użytkownicy, którzy dokonali zatwierdzeń) w Git?

Jakieś dodatkowe statystyki?

Ritam Nemira
źródło

Odpowiedzi:

387

Aby wyświetlić wszystkich użytkowników i wiadomości e-mail oraz liczbę zatwierdzeń w gałęzi CURRENT:

git shortlog --summary --numbered --email

Lub po prostu:

git shortlog -sne

Aby pokazać użytkowników ze wszystkich gałęzi (nie tylko tych w bieżącej gałęzi), musisz dodać --allflagę:

git shortlog -sne --all
Pedro Nascimento
źródło
3
Zauważ, że jeśli chcesz użyć tego polecenia z poziomu skryptu lub czegoś takiego jak „mrówka”, musisz podać wersję lub nic nie wyświetla. Do bieżącej wersji możesz użyć HEAD:git shortlog -sn HEAD
Majenko
59
Aby uzyskać również adresy e-mail, dodaj -e.
mic_e
10
Aby pokazać użytkowników ze wszystkich gałęzi (nie tylko obecnych) należy dodać --allflagę
Gian Marco Gherardi
3
co jeśli nie chcę liczby zatwierdzeń?
Wearybands
1
Jest to również świetne do sprawdzania, kto dotknął określonego pliku, a nie całego projektu. git shortlog --summary --numbered <pathToFile>
jxramos
40

Jeśli chcesz być bardziej szczegółowy na liście (znajdź listę unikatowego autora i autora), możesz użyć git log:

git log --pretty="%an %ae%n%cn %ce" | sort | uniq
  • %an imię autora
  • %ae e-mail autora
  • %n Nowa linia
  • %cn nazwa podmiotu zatwierdzającego
  • %ce adres e-mail osoby odpowiedzialnej

Inne symbole zastępcze są opisane w ładnej dokumentacji drukowanejgit log .

Guillaume Vincent
źródło
Myślę, że %nnie ma to zbyt wielkiego sensu w połączeniu z (liniowym) sort, prawda? Linia rejestruje nazwę autor / committer / e-mail w osobnych liniach, ale w ciągu całego rodzaju wyjścia ...
SSC
E-mail osoby zatwierdzającej @ssc może różnić się od wiadomości e-mail autora. % n jest dla nowej linii, aby znaleźć te różnice
Guillaume Vincent
19

Możesz spróbować:

git log | grep Author: | sort | uniq
Santa Zhang
źródło
1
Jest to najbardziej przydatne polecenie dla wszystkich zainteresowanych aktualizacją pliku .mailmap!
Ahi Tuna
7

(użytkownicy, którzy dokonali zatwierdzeń)

Uwaga: domyślnie git shortloggrupy zatwierdzają autorzy .

Jeśli chcesz pogrupować je według osób odpowiedzialnych, będziesz potrzebować Git 2.12 (Q1 2017)

git shortlog -snc

Zobacz zatwierdzenie 03f4082 (16 grudnia 2016 r.) Autor: Jeff King ( peff) .
Zobacz commit fbfda15 (11 października 2016) autorstwa Linusa Torvaldsa ( torvalds) .
(Połączone przez Junio ​​C Hamano - gitster- in commit ad1b4e2 , 27 grudnia 2016)

Sam Linus Torvalds wprowadza tę funkcję:

shortlog: grupuj według informacji o komisarzu

W niektórych sytuacjach możesz zgrupować zatwierdzenia nie według autora, ale według zatwierdzającego.

Na przykład, gdy chciałem po prostu sprawdzić, co wciąż mi brakuje linux-nextw bieżącym oknie scalania, nie dbam tak bardzo o to, kto napisał łatkę, jak o to git tree, skąd pochodzi, co ogólnie sprowadza się do „kto popełnił to".

Tak więc, aby git shortlog wybrał opcję „ -c” lub „ --committer”, aby przełączyć na nią grupowanie.

VonC
źródło
2

Inną opcją może być:

git log --format='%aN' | sort -u
OcXocę 웃 Пepeúpa ツ
źródło
1

Sam jeszcze go nie testowałem, ale wygląda to naprawdę ładnie dla statystyk projektu dla repozytorium Git: https://github.com/visionmedia/git-extras

Sprawdź binkatalog, aby zobaczyć różne skrypty.

Na przykład git-countskrypt (liczba zatwierdzeń na osobę odpowiedzialną):

git shortlog -n $@ | grep "):" | sed 's|:||'
Daniel Lee
źródło
1
git shortlog -ns wydaje się mniej
hackerski
@TomDLT, odkąd opublikowałem to 4 lata temu, ten przykładowy skrypt w git-extras się zmienił. Ale myślę, że moja rada, aby przyjrzeć się skryptom git z projektów takich jak git-dodatki lub z plików dot ludzi, jest nadal świetną radą. Jeśli szukasz interesujących poleceń git, poleciłbym również pliki kropkowe
Daniel Lee
1

Świetne odpowiedzi autorstwa @ pedro-nascimento, @mic_e i innych już rozwiązały problem.

Ponadto możesz dodać następujący wiersz do swojego .gitconfig

contributors = shortlog -e --summary --numbered

lub w rodzaju powłoki

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

Następnie możesz po prostu wywołać: git contributors

adem
źródło
1
prawdopodobnie powinieneś dodać notatkę, że po ustawieniu tego możesz po prostu zadzwonićgit contributors
lohfu