每个作者的 GIT 贡献(行)

Posted

技术标签:

【中文标题】每个作者的 GIT 贡献(行)【英文标题】:GIT contribution per author (lines) 【发布时间】:2014-10-16 10:18:10 【问题描述】:

我正在尝试将每个作者的每行贡献打印到 Git 存储库。

为此,我使用以下命令,改编自 How to count total lines changed by a specific author in a Git repository?

git ls-tree -r -z --name-only HEAD -- */*.c | xargs -0 -n1 git blame \
--line-porcelain HEAD |grep  "^author "|sort|uniq -c|sort -nr

但是,我收到以下错误:

fatal: cannot stat path 'HEAD': No such file or directory.

我做错了什么?

【问题讨论】:

【参考方案1】:

好的,经过更多调查,我在 SO 上发现了这个。

git ls-files -z | xargs -0n1 git blame -w | perl -n -e '/^.*?\((.*?)\s+[\d]4/; print $1,"\n"' | sort -f | uniq -c | sort -n  

答案来自Eric Z的支持

结果

    234926 USER 1
     32453 USER 2
   2941234 USER 3

【讨论】:

【参考方案2】:

这意味着您的表达式的第一部分没有给出任何结果。试试

git ls-tree -r -z --name-only HEAD -- */*.c

没有后半部分;可能这会给你空输出。修复该表达式以列出您要处理的文件...如果我在不包含任何 .c 文件的存储库中使用它;它给了我和你一样的错误。删除选项 */*.c 或将其修复为 */*.cpp 修复它(取决于您想要的结果)

【讨论】:

我刚刚得到一长串项目文件。不包含作者信息 如果您在没有*/*.c 部分的情况下使用整个命令,您仍然会遇到同样的错误吗? 如果不这样做,请添加第二部分等。直到出现错误;然后我们可以进一步调试:)

以上是关于每个作者的 GIT 贡献(行)的主要内容,如果未能解决你的问题,请参考以下文章

获取有关特定目录中行贡献的 Git 统计信息

在 git 中显示每个作者的更改行数

如何在 Git 存储库中按作者计算每个文件路径名的提交次数?

更改 Git/GitHub 存储库的作者姓名和电子邮件,为所有提交保留时间戳

Git rebase 更改作者? [复制]

R 包的作者与贡献者 - 小代码贡献的角色是啥? [关闭]