自给定提交以来git中的作者列表

时间:2011-06-26 06:07:12

标签: git

我想要一种方法列出所有git作者

  1. 仅限于给定的提交。
  2. 很独特。
  3. 这两个很容易,我在网上看到了一些解决方案,大部分使用git log --format。但我所看到的都没有符合额外的要求:

    1. 按提交日期排序。因此,如果John Smith在Aaron Meurer面前犯下,他的名字应该出现在我的面前(我是Aaron Meurer)。
    2. 尊重.mailmap。据我所知,只有git shortlog这样做,并且它提供了一些我不想要的额外内容。但也许我错了。或者也许那些比我sed和朋友更方便的人会使用它。
    3. (顺便说一句,如何让Markdown 重新开始编号?)

      我还想要一种按姓氏排序的方法,但这相对容易。

2 个答案:

答案 0 :(得分:23)

对于想要"全球统计":

的用户请注意
git shortlog -s -n -e

通过作者提交全局统计信息。

答案 1 :(得分:20)

以下格式说明符将解决您的第二个问题:

%aN:作者姓名(尊重.mailmap)
%aE:作者电子邮件(尊重.mailmap)
%cN:提交者名称(尊重.mailmap)
%cE:提交者电子邮件(尊重.mailmap)

因此,对重复的作者部分进行折扣,您需要类似

的内容
git log <commit>.. --format="%aN <%aE>" --reverse

我怀疑你可以通过基于哈希表的重复数据删除来管理它,perl oneliner会很简单:

git log <commit>.. --format="%aN <%aE>" --reverse | perl -e 'my %dedupe; while (<STDIN>) { print unless $dedupe{$_}++}'