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


205

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

还有其他统计信息吗?

Answers:


386

要显示所有用户和电子邮件以及CURRENT分支中的提交次数:

git shortlog --summary --numbered --email

或者简单地:

git shortlog -sne

要显示所有分支的用户(不仅是当前分支的用户),您必须添加--all标志:

git shortlog -sne --all

3
请注意,如果要从脚本或“ ant”之类的命令中使用此命令,则必须指定一个修订版本,否则它不会输出任何内容。对于当前版本,您可以使用HEAD:git shortlog -sn HEAD
Majenko

59
要获取电子邮件地址,请添加-e
mic_e 2014年

10
要显示所有分支(不仅是当前分支中的分支)的用户,您必须添加--all标志
Gian Marco Gherardi 2015年

3
如果我不希望提交次数怎么办?
Wearybands '18

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

@ssc提交者电子邮件可以不同于作者电子邮件。%n用于换行以找到这些差异
Guillaume Vincent

19

您可以尝试以下方法:

git log | grep Author: | sort | uniq

1
对于任何有兴趣更新其.mailmap文件的人来说,这是最有用的命令!
Ahi Tuna

7

(完成提交的用户)

注意:默认情况下,git shortlog组由authors提交

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

git shortlog -snc

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

Linus Torvalds亲自介绍了此功能:

shortlog:按提交者信息分组

在某些情况下,您可能不希望按作者对提交进行分组,而是按提交者进行分组。

例如,当我只想linux-next在当前合并窗口中查找仍然缺少的内容时,我不太在乎谁写了补丁,git tree而是从何而来,通常归结为“谁提交了”它”。

因此,使git shortlog使用“ -c”或“ --committer”选项将分组切换到该选项。



1

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

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

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

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

1
git shortlog -ns似乎不那么
骇人听闻

自从我四年前发布@TomDLT以来,git-extras中的示例脚本已更改。但是我认为我建议从git-extras等项目或人们的dotfile中查看git脚本仍然是不错的建议。如果您正在寻找有趣的git命令,那么我也会推荐加里·伯恩哈特(Gary Bernhardt)的dotfile:github.com/garybernhardt/dotfiles/tree/master/bin
Daniel Lee

1

@ pedro-nascimento,@ mic_e和其他人的出色答案已经解决了这个问题。

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

contributors = shortlog -e --summary --numbered

或外壳类型

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

然后,您可以简单地调用: git contributors


1
您可能应该添加一条便条,设置此条后您可以简单地致电git contributors
lohfu

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.