我想问一下git中是否有一个命令可以列出所有作者姓名及其提交的最后日期
(例如,作者mike last commit于2017年2月2日发布)
我在mac iOS终端上使用git,我是初学者,使用git
谢谢
答案 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循环中断的作者名称,其中包含空格,这很常见。很抱歉早些时候错过了这个细节。