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

还有其他统计数据吗?


当前回答

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

此外,您可以将以下行添加到.gitconfig中

contributors = shortlog -e --summary --numbered

或壳型

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

在此之后,您可以简单地调用:git贡献者

其他回答

(已经提交的用户)

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

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

git shortlog -snc

参见Jeff King (peff)提交03f4082(2016年12月16日)。 参见Linus Torvalds提交fbfda15(2016年10月11日)。 (由Junio C Hamano—gitster—在commit ad1b4e2中合并,2016年12月27日)

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

Shortlog:根据提交者信息分组 在某些情况下,你可能不希望按照作者来分组提交, 而是由提交者。 例如,当我只想在当前合并窗口中查找linux-next中仍然缺少的内容时,我不太关心谁 写了一个补丁,作为什么git树它来自,它一般沸腾 归结为“是谁干的”。 所以让git shortlog带一个"-c"或"——committer"选项来切换分组。

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

git log --pretty="%an %ae%n%cn %ce" | sort -u

%作者姓名 %ae作者邮箱 %n新行 %cn提交者名称 提交人电子邮件

其他占位符在git日志的漂亮打印文档中进行了描述。

另一个选择是使用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统计信息。

我还没有亲自测试它,但是对于Git存储库的项目统计信息来说,它看起来非常不错:https://github.com/visionmedia/git-extras

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

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

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

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

此外,您可以将以下行添加到.gitconfig中

contributors = shortlog -e --summary --numbered

或壳型

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

在此之后,您可以简单地调用:git贡献者