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

自给定提交以来git中的作者列表,git,Git,我想要一种列出所有git作者的方法 仅自给定的提交之后 这是独一无二的 这两种方法都很简单,我在网上看到了一些解决方案,大多数都使用git log--format。但我看到的都不符合附加要求: 按提交日期排序。所以,如果约翰·史密斯在艾伦·默勒之前犯了罪,他的名字应该出现在我的名字之前(我是艾伦·默勒) 邮件地图。据我所知,只有GitShortLog能做到这一点,而且它提供了一堆我不想要的额外东西。但也许我错了。或者你们中那些比我更擅长使用sed和朋友的人也会使用它 (顺便问一下,我如何使降价不

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

  • 仅自给定的提交之后
  • 这是独一无二的
  • 这两种方法都很简单,我在网上看到了一些解决方案,大多数都使用
    git log--format
    。但我看到的都不符合附加要求:

  • 按提交日期排序。所以,如果约翰·史密斯在艾伦·默勒之前犯了罪,他的名字应该出现在我的名字之前(我是艾伦·默勒)
  • 邮件地图。据我所知,只有GitShortLog能做到这一点,而且它提供了一堆我不想要的额外东西。但也许我错了。或者你们中那些比我更擅长使用sed和朋友的人也会使用它
  • (顺便问一下,我如何使降价不重新开始编号?)


    我还需要一种按姓氏排序的方法,但这相对简单。

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

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

    因此,不考虑重复作者部分,您需要

    git log <commit>.. --format="%aN <%aE>" --reverse
    
    git日志--format=“%aN”--反向
    
    我怀疑您可以通过某种方式来实现基于哈希表的重复数据消除,perl oneliner将是微不足道的:

    git log <commit>.. --format="%aN <%aE>" --reverse | perl -e 'my %dedupe; while (<STDIN>) { print unless $dedupe{$_}++}'
    
    git日志--format=“%aN”--反向| perl-e”我的%dedupe;while(){print inspect$dedupe{$\u}++}'
    
    需要“全球统计”的人注意:


    提供作者提交的全局统计信息。

    谢谢。实际上,我不想要
    部分,但这很容易删除,而且很容易了解。过去50次提交中的唯一作者:
    git log HEAD~50--format=“%aN”--reverse | sort | uniq
    @cxreg,既然可以使用
    sort-u
    ,为什么还要使用perl脚本呢。i、 例如,
    git日志--format=“%aN”--反向排序-u
    。从这些解决方案中,使用sort不会保留提交顺序,这是需求1,也是我使用perl oneliner的原因
    git shortlog -s -n -e