首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何计算Git存储库中特定作者更改的总行数?

如何计算Git存储库中特定作者更改的总行数?
EN

Stack Overflow用户
提问于 2018-02-07 01:59:53
回答 10查看 0关注 0票数 0

我是否可以调用一个命令来计算特定作者在Git存储库中更改的行数?

EN

回答 10

Stack Overflow用户

发布于 2018-02-07 02:21:16

以下命令的输出应该相当容易发送到脚本,以将总数加起来:

代码语言:javascript
复制
git log --author="<authorname>" --oneline --shortstat

这为当前头上所有提交的数据提供了统计数据。如果要在其他分支中添加统计数据,则必须将它们作为参数提供给git log.

为了传递到脚本,甚至可以用空日志格式删除“oneline”格式,而且正如Jakub Nar bski所评论的那样,--numstat是另一种选择。

代码语言:javascript
复制
git log --author="<authorname>" --pretty=tformat: --numstat
票数 0
EN

Stack Overflow用户

发布于 2018-02-07 03:17:30

使用Gawk:

代码语言:javascript
复制
git log --author="_Your_Name_Here_" --pretty=tformat: --numstat \
| gawk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s\n", add, subs, loc }' -

在MacOSX上使用Awk:

代码语言:javascript
复制
git log --author="_Your_Name_Here_" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -

编辑(2017)

GitHub上有一个新的包,它看起来很流畅,并且使用bash作为依赖项(在Linux上进行了测试)。它更适合直接使用,而不是脚本。

它是Git-快速统计(GitHub链接).

复制git-quick-stats到文件夹中,并将该文件夹添加到路径中。

代码语言:javascript
复制
mkdir ~/source
cd ~/source
git clone git@github.com:arzzen/git-quick-stats.git
mkdir ~/bin
ln -s ~/source/git-quick-stats/git-quick-stats ~/bin/git-quick-stats
chmod +x ~/bin/git-quick-stats
export PATH=${PATH}:~/bin

用法:

代码语言:javascript
复制
git-quick-stats
票数 0
EN

Stack Overflow用户

发布于 2018-02-07 04:41:02

可以尝试下使用:

代码语言:javascript
复制
git log --shortstat --pretty="%cE" | sed 's/\(.*\)@.*/\1/' | grep -v "^$" | awk 'BEGIN { line=""; } !/^ / { if (line=="" || !match(line, $0)) {line = $0 "," line }} /^ / { print line " # " $0; line=""}' | sort | sed -E 's/# //;s/ files? changed,//;s/([0-9]+) ([0-9]+ deletion)/\1 0 insertions\(+\), \2/;s/\(\+\)$/\(\+\), 0 deletions\(-\)/;s/insertions?\(\+\), //;s/ deletions?\(-\)//' | awk 'BEGIN {name=""; files=0; insertions=0; deletions=0;} {if ($1 != name && name != "") { print name ": " files " files changed, " insertions " insertions(+), " deletions " deletions(-), " insertions-deletions " net"; files=0; insertions=0; deletions=0; name=$1; } name=$1; files+=$2; insertions+=$3; deletions+=$4} END {print name ": " files " files changed, " insertions " insertions(+), " deletions " deletions(-), " insertions-deletions " net";}'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档