我想在我的git日志上做一些统计数据,以获得类似的内容:
10 Daniel Schmidt
5 Peter
1 Klaus
第一列是提交计数,第二列是提交者。 我已经达到了这个目的:
git log --raw |
grep "^Author: " |
sort |
uniq -c |
sort -nr |
less -FXRS
有趣的部分是
grep "^Author: "
我想用一个漂亮的Regex修改以排除邮件地址。 使用Rubular这样的http://rubular.com/r/mEzP2hFjGb工作,但如果我将它插入grep(或管道中的其他),它将无法得到正确的输出。
Sidequestion:在保持这种管道命令样式的同时,是否有可能获得计数和作者用其他东西分隔空白?我希望稍后在我们两个列之间有一个更好的分隔符(也许是一些颜色^^)
非常感谢你的帮助!
答案 0 :(得分:5)
Google git-extras
。它有git summary
来执行此操作。
答案 1 :(得分:1)
git shortlog -n -s
为您提供相同的数据。例如,在git存储库中(用管道传输以获得更高的数字):
$ git shortlog -n -s | head -4
11129 Junio C Hamano
1395 Shawn O. Pearce
1103 Linus Torvalds
896 Jeff King
要获得不同的分隔符,可以将其传递给awk
:
$ git shortlog -n -s | awk 'BEGIN{OFS="|";} { $1=$1; print $0 }' | head -4
11129|Junio|C|Hamano
1395|Shawn|O.|Pearce
1103|Linus|Torvalds
896|Jeff|King
答案 2 :(得分:0)
你可以使用perl one-liner获得pcre的全部功能(这应该与你的Rebular实验相匹配):
perl -ane 'print if /^Author: /'
根据需要扩展该模式。
要重新格式化,您可以使用awk
(例如awk '{printf "%5d\t%s", $1, $2}'
)