猿问
下载APP

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

我是否可以调用一个命令来计算Git信息库中特定作者更改的行数?我知道,必须有一些方法可以计算提交次数,因为Github会对影响图进行计数。



慕田峪9158850
浏览 68回答 3
3回答

蓝山帝景

以下命令的输出应相当容易发送到脚本以将总数相加:git log --author="<authorname>" --oneline --shortstat这给出了当前HEAD上所有提交的统计信息。如果您想在其他分支中添加统计信息,则必须将其作为参数提供给git log。为了传递给脚本,甚至可以使用空的日志格式删除“ oneline”格式,正如JakubNarębski所评论的那样,这--numstat是另一种选择。它生成每个文件而不是每个行的统计信息,但更易于解析。git log --author="<authorname>" --pretty=tformat: --numstat

慕哥6287543

这将提供有关作者的一些统计信息,并根据需要进行修改。使用Gawk: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 }' -在Mac OSX上使用Awk: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-quick-stats(github链接)。复制git-quick-stats到文件夹并将该文件夹添加到路径。mkdir ~/sourcecd ~/sourcegit clone git@github.com:arzzen/git-quick-stats.gitmkdir ~/binln -s ~/source/git-quick-stats/git-quick-stats ~/bin/git-quick-statschmod +x ~/bin/git-quick-statsexport PATH=${PATH}:~/bin用法:git-quick-stats

慕姐8265434

万一有人想在他们的代码库中看到每个用户的统计信息,我的几个同事最近想出了这个可怕的单行代码: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";}'(花了几分钟来处理我们的回购,该回购大约有10-15k次提交。)
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答