Список всех разработчиков проекта в Git

207

Можно ли перечислить всех пользователей, которые внесли свой вклад в проект (пользователей, которые сделали коммиты) в Git?

Любая дополнительная статистика?

Ритам Немира
источник

Ответы:

390

Чтобы показать всех пользователей и электронные письма, а также количество коммитов в ветке CURRENT:

git shortlog --summary --numbered --email

Или просто:

git shortlog -sne

Чтобы показать пользователей из всех веток (не только из текущей ветки), вы должны добавить --allфлаг:

git shortlog -sne --all
Педро Наскименто
источник
3
Обратите внимание, что если вы хотите использовать эту команду из скрипта или что-то вроде «муравей», вы должны указать ревизию или она ничего не выводит. Для текущей ревизии вы можете использовать HEAD:git shortlog -sn HEAD
Majenko
59
Чтобы получить адреса электронной почты, а также добавить -e.
mic_e
10
Чтобы показать пользователей из всех ветвей (не только из текущей ветки), вы должны добавить --allфлаг
Джан Марко
3
Что делать, если я не хочу количество коммитов?
Wearybands
1
Это также отлично подходит для проверки того, кто касается определенного файла, а не всего проекта. git shortlog --summary --numbered <pathToFile>
jxramos
40

Если вы хотите быть более точным в списке (найти список уникальных коммиттеров и авторов), вы можете использовать git log:

git log --pretty="%an %ae%n%cn %ce" | sort | uniq
  • %an имя автора
  • %ae электронная почта автора
  • %n новая линия
  • %cn имя коммиттера
  • %ce электронная почта коммиттера

Другие заполнители описаны в красивой печатной документацииgit log .

Гийом Винсент
источник
Я думаю, что %nне имеет большого смысла в сочетании с (на основе строки) sort, не так ли? Строка записывает имя автора /
коммиттера
Электронная почта коммиттера @ssc может отличаться от электронной почты автора. % n для новой строки, чтобы найти эти различия
Гийом Винсент
19

Вы можете попробовать это:

git log | grep Author: | sort | uniq
Санта Чжан
источник
1
Это самая полезная команда для всех, кто заинтересован в обновлении своего файла .mailmap!
Ахи тунец
7

(пользователи, которые сделали коммиты)

Примечание: по умолчанию git shortlogгруппы фиксируются авторами .

Если вам нужно сгруппировать их по коммиттерам, вам понадобится Git 2.12 (1 квартал 2017 года)

git shortlog -snc

См. Коммит 03f4082 (16 декабря 2016 г.) Джеффа Кинга ( peff) .
Смотрите коммит fbfda15 (11 октября 2016 г.) Линуса Торвальдса ( torvalds) .
(Объединено Junio ​​C Hamano - gitster- в коммите ad1b4e2 , 27 декабря 2016 г.)

Сам Линус Торвальдс вводит эту функцию:

shortlog: сгруппировать информацию по коммиттеру

В некоторых ситуациях вы можете сгруппировать коммиты не по автору, а по коммиттеру.

Например, когда я просто хотел посмотреть, что мне все еще не хватает linux-nextв текущем окне слияния, меня не волнует столько, кто написал патч, а то, git treeоткуда он взялся, который обычно сводится к тому, «кто совершил Это".

Так что заставьте git shortlog выбрать опцию « -c» или « --committer», чтобы переключить группировку на эту.

VonC
источник
2

Другой вариант может быть:

git log --format='%aN' | sort -u
ΦXocę 웃 Пепеупа ツ
источник
1

Я сам пока не удосужился протестировать его, но это выглядит очень хорошо для статистики проекта для репозитория Git: https://github.com/visionmedia/git-extras

Проверьте binкаталог, чтобы увидеть различные сценарии.

Например, git-countскрипт (количество коммитов на коммиттера):

git shortlog -n $@ | grep "):" | sed 's|:||'
Дэниел Ли
источник
1
git shortlog -ns кажется менее хакерским
TomDLT
@TomDLT с тех пор, как я опубликовал это 4 года назад, этот пример сценария в git-extras изменился. Но я думаю, что мой совет взглянуть на git-скрипты из таких проектов, как git-extras или из точечных файлов людей, по-прежнему отличный совет. Если вы ищете интересные команды git, я бы также порекомендовал точечные файлы Гэри Бернхардта: github.com/garybernhardt/dotfiles/tree/master/bin
Дэниел Ли,
1

Отличные ответы @ pedro-nascimento, @mic_e и других уже решают проблему.

Кроме того, вы можете добавить следующую строку в ваш .gitconfig

contributors = shortlog -e --summary --numbered

или в типе оболочки

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

И после этого вы можете просто вызвать: git contributors

ADEM
источник
1
Вы, вероятно, должны добавить примечание, что после установки этого вы можете просто позвонитьgit contributors
lohfu