git列出项目中所有作者的最后提交日期

时间:2018-02-06 21:23:24

标签: git

我想问一下git中是否有一个命令可以列出所有作者姓名及其提交的最后日期

(例如,作者mike last commit于2017年2月2日发布)

我在mac iOS终端上使用git,我是初学者,使用git

谢谢

3 个答案:

答案 0 :(得分:3)

git log --pretty=%an%x09%ad | awk -F$'\t' '!seen[$1]++'

%x09是字符代码9,即'\t'-F$'\t'将其设置为awk的字段分隔符,seen[$1]++仅在第一次为零。

%an打印作者姓名,%ad打印作者身份日期。

答案 1 :(得分:2)

最简单的选择是使用pretty格式选项来实现此类操作。

在这种情况下,您可能需要以下内容:

 git log --pretty="%aD %an %ae"
默认情况下,

git log将以反向时间顺序输出,因此名称的第一次出现是它们的最后一次提交。因此,在* nix系统上,类似下面的内容将获得您想要的行:

git log --pretty="Author: %an last commit: %ai" |grep "mike" |head -n1

查看所有man git-log宏选项的PRETTY FORMAT%部分。

答案 2 :(得分:2)

这应该让你非常接近。保存并使其可执行(chmod + x filename )。然后,当然,在你的git项目目录(./ filename )中执行它。

#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for a in `git log --pretty="%an" | sort | uniq`; do git log --author="$a" --pretty="Author: %an Last commit: %ai" | head -n1; done
IFS=$SAVEIFS

我想我应该稍微解释一下这个策略。基本上,我们为所有作者查询git,然后对该列表进行排序并将其缩小为唯一条目:

`git log --pretty="%an" | sort | uniq`

然后,对于每个独特的作者,我们只为该作者做一个git日志,并只采用最佳结果,根据我们的喜好格式化--pretty:

git log --author="$a" --pretty="Author: %an Last commit: %ai" | head -n1

其余的只是循环机制(bash的for循环)。对我来说,它并没有完美地完美地工作,但是相当接近。应该是一个开始根据您的特定需求定制的好地方 - 享受!

注意:在与IFS / SAVEIFS相关的脚本中添加了几行。这将修复for循环中断的作者名称,其中包含空格,这很常见。很抱歉早些时候错过了这个细节。