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

时间:2018-08-17 19:51:04

标签: git github

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

此外,是否可以获取文件上次更改的日期?

我是git新手,对此一无所获。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

这是两种方法。

您可以使用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

这显示benchmark/README.md更改了4次,其余更改了一次。

使用您喜欢的编程语言对其进行解析。

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


  

此外,还有什么方法可以获取上次更改文件的日期?

是的,git log --pretty=format:...允许您自定义显示的内容。 %ad显示作者日期(或%cd作为提交日期,author date and commit dateare potentially different)。 --date允许您更改日期格式。 git log --date=iso --pretty=format:%ad <filename>始终为您提供ISO 8601格式的文件更改。添加--author-date-order以确保按作者日期排序。然后添加一个-1以获取最后的更改。

$ git log -1 --author-date-order --date=iso --pretty=format:%ad somefile
2018-08-16 03:12:27 +0800

您可以将其与--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

答案 1 :(得分:0)

如果您安装了非常好的'git extras'工具,则有一个命令git effort可以做到这一点。

https://github.com/tj/git-extras/blob/master/Commands.md#git-effort