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

Phe*_*dan 6 git github

我正在寻找一种方法来查看有关 git 存储库中每个文件更改频率的统计信息。基本上,文件提交的频率实际上与以前的版本不同。

此外,有没有办法获取文件上次更改的日期?

我是一个 git 新手,还没有发现任何关于此的信息。任何帮助将不胜感激!

Sch*_*ern 6

这里有两种方法。

您可以使用git ls-files来获取所有文件的列表。

您可以使用它git log --oneline <file>来获取影响该文件的所有提交的列表,每个提交都占一行。然后将其通过管道wc -l获取计数。

将它们与您最喜欢的编程语言放在一起。

如果您只想查看几个文件,这非常有用。


您可以使用git log --pretty=format: --name-only来获取每次提交中更改的所有文件的列表。提交由换行符分隔。例如...

$ git log --pretty=format: --name-only
benchmark/README.md

benchmark/README.md
benchmark/app_erb.rb
benchmark/app_erb.yml
benchmark/erb_render.rb
benchmark/erb_render.yml

benchmark/README.md

benchmark/README.md
Run Code Online (Sandbox Code Playgroud)

这个节目benchmark/README.md改了4次,其余的改了一次。

用您最喜欢的编程语言解析它。

如果您想扫描整个历史记录,这会更有效。


此外,有没有办法获取文件上次更改的日期?

是的,git log --pretty=format:...允许您自定义显示的内容。%ad显示作者日期(或者%cd对于提交日期,作者日期和提交日期可能不同)。--date允许您更改日期格式。git log --date=iso --pretty=format:%ad <filename>为您提供 ISO 8601 格式的文件更改的所有时间。添加--author-date-order以确保它们按作者日期排序。然后添加 a-1以获取最后一次更改。

$ git log -1 --author-date-order --date=iso --pretty=format:%ad somefile
2018-08-16 03:12:27 +0800
Run Code Online (Sandbox Code Playgroud)

您可以将其放在一起,--name-only以获得所有提交、更改的文件以及时间的完整列表。

$ git log --author-date-order --date=iso --pretty=format:%ad --name-only
2018-07-10 16:03:51 +0000
benchmark/README.md

2018-07-10 15:58:52 +0000
benchmark/README.md
benchmark/app_erb.rb
benchmark/app_erb.yml
benchmark/erb_render.rb
benchmark/erb_render.yml

2018-07-10 15:51:29 +0000
benchmark/README.md

2018-07-10 15:49:42 +0000
benchmark/README.md
Run Code Online (Sandbox Code Playgroud)