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

加里·韦弗

虽然git-blame计数git存储库中的作者更改的行数很有帮助,但是有没有一条命令可以列出在回购中所有作者或一组作者对所有提交进行评分的所有路径名,该命令对每个文件进行评分通过该作者或一组作者的提交次数?例如,在克隆的git repo中运行这样的命令的输出类似于:

1    /path/to/some/file/in/repo/file1
34   /path/to/some/file/in/repo/file2
3    /path/to/some/other/file/in/repo/anotherfile
...

谢谢!

加里·韦弗

刚刚意识到,如果您在* nix / OS X中--name-only使用文件名将漂亮的格式打印为空字符串,并使用此方法对提交的最高次数进行排序,唯一化和排序,则可以使用:

git log --name-only --author=John --pretty=format: | sort | uniq -c | sort -nr

确保使用的作者合适。

例如,如果我们尝试在Rails中寻找DHH的作者,则可以这样做:

git log --format='%aN <%aE>' | LC_ALL='C' sort -u | grep avid

并注意DHH在Rails git repo中的所有作者都使用了“ David Heinemeier Hansson”这个名字。因此,我们可以这样做:

git log --name-only --author="David Heinemeier Hansson" --pretty=format: | sort | uniq -c | sort -nr

可能输出:

3624 
 611 actionpack/CHANGELOG
 432 activerecord/CHANGELOG
 329 railties/CHANGELOG
 206 activerecord/lib/active_record/base.rb
 195 activesupport/CHANGELOG
 157 actionpack/lib/action_controller/base.rb
 153 railties/Rakefile
 108 activerecord/lib/active_record/associations.rb
  79 actionpack/lib/action_view/helpers/javascript_helper.rb
  75 activerecord/lib/active_record/validations.rb
  74 activerecord/test/base_test.rb
  69 actionmailer/CHANGELOG
  66 railties/lib/rails_generator/generators/applications/app/app_generator.rb
  66 activerecord/Rakefile
  66 actionpack/lib/action_controller/caching.rb
  60 actionpack/lib/action_controller/routing.rb
  59 railties/lib/initializer.rb
  59 actionpack/Rakefile
  57 actionpack/lib/action_controller/request.rb
  ...

因此,截至2015年2月21日,Rails git回购中有3624个文件,看来他从未亲自提交过该文件,该文件的最大提交数量是ActionPack CHANGELOG,共611次提交,其次是ActiveRecord CHANGELOG ,而ActiveRecord :: Base是他提交最多的Ruby文件。

如果要从计数中排除未触及的文件数,请使用--format=代替--pretty=format:,例如:

git log --name-only --author="David Heinemeier Hansson" --format: | sort | uniq -c | sort -nr

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

获取git存储库中每个文件的提交计数

如何在git存储库中查找已提交文件的累积计数

如何在Java中更改文件的路径名?

如何逐行读取文件中的路径名,并将其应用于每个路径名?

如何通过提交哈希查询git存储库中的提交文件和每个文件的大小?

如何查找整个存储库中对文件的提交次数

如何在unix中使用expr从存储在变量中的文件的绝对路径名中提取父目录?

尝试在数据库中存储文件路径名时,为什么返回null?

如何在 Git 存储库中显示特定作者更改的文件列表?

如何从PHP中的数据库完整路径名获取每个用户的图像

如何从GitHub存储库中删除错误的路径名?

如何在 github 操作中获取存储库的提交计数?

如何在UWP中的新SQLiteConnection中传递数据库路径名?

提交后,如何 gitignore git 存储库中的所有单个文件扩展名文件?

如何在Gatsby中获取布局文件中的路径名

如何在递归函数中跟踪文件路径名?

如何使用git列出目录中每个文件的原始提交(时间和作者)?

2个提交如何在git存储库中具有相同的文件信息?

如果我提交的存储库或分支不再存在,如何在 git 中恢复已删除的文件

在从Git存储库推送之前,如何测量提交次数?

如果更改git存储库的路径名怎么办?

如何使用git存储库中已存在的文件创建新的git存储库,并保持提交

如何按顺序获取路径名,子目录名和文件列表?

如何使用JGit获取存储库中每个文件已更改的次数?

如何在git存储库中列出跟踪文件的所有不同扩展名?

如何在 git 中删除作者或提交者

如何计算git存储库中每个提交者的总行数

如何在Git存储库中重新提交所有提交?

如何在不同的git存储库中的文件夹中创建独立的git存储库?