虽然git-blame和计数 git存储库中的作者更改的行数是有帮助的,但是有一个命令可以列出所有提交中的repo中修改的所有路径名,作者或作者集对每个文件进行评分根据该作者或作者集的提交数量?例如,在克隆的git仓库中运行这样一个命令的输出类似于:
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
...
Run Code Online (Sandbox Code Playgroud)
谢谢!
Gar*_*ver 16
刚刚意识到,如果你使用--name-only
打印文件名,漂亮的格式为空字符串,并使用此方法进行排序,uniq,并按最大提交次数排序,在*nix/OS X中,您可以使用:
git log --name-only --author=John --pretty=format: | sort | uniq -c | sort -nr
Run Code Online (Sandbox Code Playgroud)
确保您使用的是正确的作者.
例如,如果我们试图在Rails中找到DHH的作者,我们可能会:
git log --format='%aN <%aE>' | LC_ALL='C' sort -u | grep avid
Run Code Online (Sandbox Code Playgroud)
并注意到DHH在Rails git repo中的所有作者都使用"David Heinemeier Hansson"这个名字.那么,我们可以这样做:
git log --name-only --author="David Heinemeier Hansson" --pretty=format: | sort | uniq -c | sort -nr
Run Code Online (Sandbox Code Playgroud)
可能输出:
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
...
Run Code Online (Sandbox Code Playgroud)
因此,截至2015-02-21,Rails git repo中有3624个文件,看起来他从未亲自提交过,文件提交的最大数量是611提交的ActionPack CHANGELOG,其次是ActiveRecord CHANGELOG和ActiveRecord :: Base是他提交的最多的Ruby文件.
如果要从计数中排除未触及的文件数,请使用--format=
而不是--pretty=format:
,例如:
git log --name-only --author="David Heinemeier Hansson" --format: | sort | uniq -c | sort -nr
Run Code Online (Sandbox Code Playgroud)