在Git中列出项目中的所有开发人员

是否可以在Git中列出所有为项目做出贡献的用户(已经提交的用户)?

还有其他统计数据吗?

92238 次浏览

你可以试试这个:

git log | grep Author: | sort | uniq

显示所有用户&电子邮件,以及在CURRENT分支中提交的数量:

git shortlog --summary --numbered --email

或者仅仅是:

git shortlog -sne

为了显示来自所有分支的用户(不仅仅是当前分支中的用户),你必须添加--all标志:

git shortlog -sne --all

我自己还没有测试它,但对于Git存储库的项目统计:https://github.com/visionmedia/git-extras来说,这看起来真的很不错

检查bin目录以查看不同的脚本。

例如,git-count脚本(每个提交者的提交计数):

git shortlog -n $@ | grep "):" | sed 's|:||'

如果你想在列表中更具体(找到唯一的提交者和作者的列表),你可以使用git log:

git log --pretty="%an %ae%n%cn %ce" | sort | uniq
  • %an作者名
  • %ae作者邮箱
  • %n新行
  • %cn提交者名称
  • %ce提交者电子邮件

其他占位符在git log的漂亮打印文档中描述。

(已经提交的用户)

注意:默认情况下,git shortlog作者分组提交。

如果你需要按提交者分组,你需要Git 2.12(2017年第一季度)

git shortlog -snc

参见提交03 f4082(2016年12月16日)by 杰夫·金(peff) 参见提交fbfda15(2016年10月11日)by Linus Torvalds (torvalds).
(由Junio C Hamano—gitster提交ad1b4e2中合并,2016年12月27日)

Linus Torvalds自己介绍了这个特性:

shortlog:根据提交者信息分组

在某些情况下,你可能不想按作者分组,

例如,当我只是想在当前合并窗口中查找linux-next中仍然缺少的内容时,我不太关心谁 写了一个补丁,就像git tree它来自哪里,它通常会沸腾

所以让git shortlog带一个"-c"或"--committer"选项来切换分组。

另一种选择是:

git log --format='%aN' | sort -u

@pedro-nascimento和@mic_e等人的精彩回答已经解决了这个问题。

另外,你可以在.gitconfig中添加下面的行

contributors = shortlog -e --summary --numbered

或壳型

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

之后,你可以简单地调用:git contributors

我使用GHI打开问题,只要我知道他们的用户名,就可以将问题分配给特定的用户

我不知道这对别人是否有帮助,但我要把对我有用的解决方案留在这里:

从我运行的GitHub中只获得作者的用户名

git shortlog -sne | grep +  | sed -e "s/.*+//; s/@.*//"

它将只列出当前项目中作者的用户名。

然后我可以选择一个用户名,并分配一个问题给他/她。

对于任何想要从CMD/终端打开问题和/或分配给某人的人,这里有全球健康行动计划的文档 https://github.com/stephencelis/ghi < / p >

另一个选项是使用mergestat CLI,这是一个允许你在git历史上运行SQL查询的工具。比如这样的查询:

SELECT
author_name,
author_email count(*),
count(*)
FROM commits
GROUP BY author_name, author_email
ORDER BY count(*) DESC

将在repo中输出所有提交作者的列表,按提交数量排序。由于它只是SQL,您可以为提交时间戳添加过滤,或根据添加/删除的LOC进行排序,等等。

完全披露,我是项目的维护者/创建者,但我想分享,因为我相信它对这种类型的用例很有用。

还有summary命令,它在repo中按作者打印git统计信息。