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

asm*_*rer 18 git

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

  1. 仅在给定提交之后.
  2. 是独特的.

这两个很容易,我在网上看到了一些解决方案,大多数使用git log --format.但我所看到的都没有符合额外的要求:

  1. 按提交日期排序.因此,如果John Smith在Aaron Meurer面前犯下,他的名字应该出现在我的面前(我是Aaron Meurer).
  2. 尊重.mailmap.据我所知,只有git shortlog这一点,它提供了一堆我不想要的额外的东西.但也许我错了.或者也许那些sed比我更方便和朋友的人会使用它.

(顺便说一句,我如何让Markdown 重新开始编号?)

我也想要一种按姓氏订购的方法,但这相对容易.

Tho*_*aux 27

想要"全球统计"的人请注意:

git shortlog -s -n -e
Run Code Online (Sandbox Code Playgroud)

通过作者提供全局统计提交.


cxr*_*reg 21

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

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

所以打折重复的作者部分,你想要的东西

git log <commit>.. --format="%aN <%aE>" --reverse
Run Code Online (Sandbox Code Playgroud)

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

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

  • 最近 50 次提交中的唯一作者: `git log HEAD~50.. --format="%aN &lt;%aE&gt;" --reverse | 排序| 独特` (3认同)
  • 使用sort的这些解决方案不保留提交顺序,这是要求#1,这也是我使用perl oneliner的原因 (3认同)