我正在寻找一种查看git存储库中每个文件更改频率的统计信息。基本上,文件的提交频率与以前的版本实际上有所不同。
此外,是否可以获取文件上次更改的日期?
我是git新手,对此一无所获。任何帮助将不胜感激!
答案 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