加入收藏 | 设为首页 | 会员中心 | 我要投稿 济源站长网 (https://www.0391zz.cn/)- 数据工具、数据仓库、行业智能、CDN、运营!
当前位置: 首页 > 服务器 > 安全 > 正文

git log根据特定条件查询日志并统计修改的代码行数

发布时间:2020-09-21 18:29:34 所属栏目:安全 来源:网络整理
导读:这篇文章主要介绍了git log根据特定条件查询日志并统计修改的代码行数,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参
副标题[/!--empirenews.page--]

随着年龄的增长和知识的积累,最近常常有种豁然开朗的感觉,或者对一个已经存在的事物突然有了新的认识,比如统计这个词很早就接触了,从没考虑过它是什么意思,而这篇总结的题目中用了统计一词,第一感觉应该是汇总、记录的意思,后来去查了词条定义,也确实就是类似的解释,从没有刻意去学这个词的含义,但是在每天的生活中已经潜移默化地归纳、总结出来了。

想要统计就得有数据源,而 git log 命令恰恰就能提供这个数据源,git log 本身就是一个显示日志的命令,日志记录的是代码库变化的数据,类似于描述代码库变化的 “史书”,想要描述历史就需要大量的数据支撑,想要统计修改的代码行数,只要我们从历史记录中找到需要计算的部分就可以了。

git log

在统计之前我们需要先整理数据,杂乱无章的数据不是不能统计,只是计算起来更加的麻烦,所以在统计前需要先将数据规范化,所以我们需要先学习一下 git log 的相关操作。

我们以 redis 开源库为例,切换到 6.0 分支,提交记录定位到 7bf665f125a4771db095c83a7ad6ed46692cd314,以此为数据源,学习一下git log 的常用的查询方法,其实使用不同的条件查询就是整理、归类数据的过程。

git log 的用法多种多样,我们主要关心两个大类,分别是条件筛选和显示格式。

条件筛选

git log 条件筛选的选项非常多,使用条件筛选的选项会影响显示的提交记录的范围,查找到想要显示的提交记录。

查询最近几条log

使用 -number 参数可以查询最近几条提交提交记录:

$ git log -3 commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0) Author: Oran Agra <oran@redislabs.com> Date: Sun Jul 19 14:00:20 2020 +0300 Redis 6.0.6. commit a5696bdf4f2687ab45f633ccb7cdc4ee9c2f957d Author: Oran Agra <oran@redislabs.com> Date: Sun Jul 19 15:33:21 2020 +0300 Run daily CI on PRs to release a branch commit e15528bf1da1f1232fd08801ad382c915be94662 Author: Itamar Haber <itamar@redislabs.com> Date: Thu Jul 16 21:31:36 2020 +0300 Adds SHA256SUM to redis-stable tarball upload (cherry picked from commit 5df0a64d30e7815c0a4a75a80f165fdee0bd1db6)

查询指定作者提交

使用 --author 参数可以查询指定作者的提交记录:

Albert@DESKTOP-6746UC3 MINGW64 /d/data/maingit/redis (6.0) $ git log -2 --author='Oran Agra' commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0) Author: Oran Agra <oran@redislabs.com> Date: Sun Jul 19 14:00:20 2020 +0300 Redis 6.0.6. commit a5696bdf4f2687ab45f633ccb7cdc4ee9c2f957d Author: Oran Agra <oran@redislabs.com> Date: Sun Jul 19 15:33:21 2020 +0300 Run daily CI on PRs to release a branch

查询指定时间段的日志

这个可选参数比较多,比如 --since、--until、--before、--after 等等,从意思很容易分辨怎么使用:

查询2020-01-01到2020-04-01的提交记录

$ git log -2 --after=2020-01-01 --before=2020-04-01 commit 957e917a84ac9979f18145a4d0b53386f5ce4fd9 (tag: 6.0-rc3) Author: antirez <antirez@gmail.com> Date: Tue Mar 31 17:56:04 2020 +0200 Redis 6.0-RC3. commit ef1b1f01a84e969ea368e7fdbaf0d10615743269 Author: antirez <antirez@gmail.com> Date: Tue Mar 31 17:41:23 2020 +0200 cast raxSize() to avoid warning with format spec.

恰好逮到了原作者的提交~

查询1年前的提交记录

$ git log -2 --until=1.year.ago commit 86aade9a024c3582665903d0cc0c5692c6677cfd Merge: 89ad0ca56 3bfcae247 Author: Salvatore Sanfilippo <antirez@gmail.com> Date: Thu Sep 5 13:30:26 2019 +0200 Merge pull request #6364 from oranagra/fix_module_aux_when Fix to module aux data rdb format for backwards compatibility with old check-rdb commit 3bfcae247a1c51788940bd4d2f32751ead451e42 Author: Oran Agra <oran@redislabs.com> Date: Thu Sep 5 14:11:37 2019 +0300 Fix to module aux data rdb format for backwards compatibility with old check-rdb When implementing the code that saves and loads these aux fields we used rdb format that was added for that in redis 5.0, but then we added the 'when' field which meant that the old redis-check-rdb won't be able to skip these. this fix adds an opcode as if that 'when' is part of the module data.

查询包含指定描述内容的提交记录

这里用可以使用 --grep 参数,可以过滤出包含指定内容的提交记录,这里指的是在 commit 描述中筛选符合条件的提交,比如查找提交描述中包含 client 的提交记录:

$ git log -2 --grep='client' commit 0f75036c07db48dfcf605e090216a4447edc38fc Author: Wen Hui <wen.hui.ware@gmail.com> Date: Wed Jul 15 05:38:47 2020 -0400 correct error msg for num connections reaching maxclients in cluster mode (#7444) (cherry picked from commit d85af4d6f5fbe9cb9787b81583627cd74b47f838) commit f89f50dbd06247677b8cb3927cbb88c1b5384061 Author: Oran Agra <oran@redislabs.com> Date: Tue Jul 14 20:21:59 2020 +0300 diskless master disconnect replicas when rdb child failed (#7518) in case the rdb child failed, crashed or terminated unexpectedly redis would have marked the replica clients with repl_put_online_on_ack and then kill them only after a minute when no ack was received. it would not stream anything to these connections, so the only effect of this bug is a delay of 1 minute in the replicas attempt to re-connect. (cherry picked from commit a176cb56a3c0235adddde33fcbaee2369a5af73e)

查找指定分支的提交记录

(编辑:济源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读