这篇文章主要介绍了git log根据特定条件查询日志并统计修改的代码行数。前言随着年龄的增长和知识的积累,最近常常有种豁然开朗的感觉,或者对一个已经存在的事物突然有了新的认识。想要统计就得有数据源,而 git log 命令恰恰就能提供这个数据源,git log 本身就是一个显示日志的命令,日志记录的是代码库变化的数据。在统计之前我们需要先整理数据,杂乱无章的数据不是不能统计,只是计算起来更加的麻烦,所以在统计前需要先将数据规范化。我们以 redis 开源库为例,切换到 6.0 分支,提交记录定位到 7bf665f125a4771db095c83a7ad6ed46692cd314,以此为数据源,学习一下git log 的常用的查询方法,其实使用不同的条件查询就是整理、归类数据的过程。条件筛选的选项非常多,使用条件筛选的选项会影响显示的提交记录的范围,查找到想要显示的提交记录。查询最近几条log使用 -number 参数可以查询最近几条提交提交记录。查询指定作者提交使用 –author 参数可以查询指定作者的提交记录。查询指定时间段的日志这个可选参数比较多,比如 –since、–until、–before、–after 等等,从意思很容易分辨怎么使用。查询2020-01-01到2020-04-01的提交记录。查询1年前的提交记录。查询包含指定描述内容的提交记录这里用可以使用 –grep 参数,可以过滤出包含指定内容的提交记录。查找指定分支的提交记录使用 git log 默认查找的是当前分支的提交记录,如果想查询其他分支的记录直接在命令后面加上分支名字就行。查询指定 commit 之间的提交记录如果想查询两个 commit 之前的提交记录,可以将两个 commit id 依次放在命令后面并用 .. 连接就可以了。查询指定文件的提交记录查询指定文件的提交记录一般直接在 git log 命令后面跟上文件名就可以。显示格式git log 除了可以筛选提交记录,还可以控制显示格式,普通不加参数,会显示作者、邮件、提交描述信息、日期等信息。通过添加参数可以控制和改变显示格式。显示单行信息git log 默认会显示多行信息,使用 –oneline 后每条提交记录只显示一行信息。显示每条记录中文件修改的具体行数和行体统计使用 –stat 参数就可以显示每条记录的中修改文件的具体行数和行数统计。显示每条提交记录中文件的增加行数和删除行数使用 –numstat 参数会把 –stat 参数中合并显示的修改行数拆分成增加行数和删除行数。统计修改的代码行数有了前面的铺垫,想要统一修改的行数就容易了,只要配合 awk 工具就可以完成统计了。还可以统计两个分支相差的代码行数。总结git log 就是一部代码库记录的“史书”,对于曾经所做的修改可以做到有史可查。git log 的选项参数可以分为筛选参数和格式参数,筛选参数可以选择记录范围,格式参数可以控制显示样式。统计就是按照一定规律来将数据进行汇总,在进行汇总前需要将数据进行整理,这样汇总的工作才会更加顺利。