亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > git log根據特定條件查詢日志并統計修改的代碼行數

git log根據特定條件查詢日志并統計修改的代碼行數

熱門標簽:聯通外呼系統電腦app軟件 400電話申請到底哪家好 400電話辦理費用低 鶴壁高頻外呼系統多少錢一個月 地圖標注項目幾個月 宿遷怎么辦理400電話 谷歌地圖標注日期 外呼系統怎么群發短信 蘇州呼叫中心外呼系統哪家強

前言

隨著年齡的增長和知識的積累,最近常常有種豁然開朗的感覺,或者對一個已經存在的事物突然有了新的認識,比如統計這個詞很早就接觸了,從沒考慮過它是什么意思,而這篇總結的題目中用了統計一詞,第一感覺應該是匯總、記錄的意思,后來去查了詞條定義,也確實就是類似的解釋,從沒有刻意去學這個詞的含義,但是在每天的生活中已經潛移默化地歸納、總結出來了。

想要統計就得有數據源,而 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)

查找指定分支的提交記錄

使用 git log 默認查找的是當前分支的提交記錄,如果想查詢其他分支的記錄直接在命令后面加上分支名字就行,比如查詢 arm 分支上的提交記錄:

$ git log -2 arm
commit 7329cc39818a05c168e7d1e791afb03c089f1933 (origin/arm, arm)
Author: Salvatore Sanfilippo antirez@gmail.com>
Date: Sun Feb 19 15:07:08 2017 +0000

 ARM: Avoid fast path for BITOP.

 GCC will produce certain unaligned multi load-store instructions
 that will be trapped by the Linux kernel since ARM v6 cannot
 handle them with unaligned addresses. Better to use the slower
 but safer implementation instead of generating the exception which
 should be anyway very slow.

commit 4e9cf4cc7ed4b732fc4bb592f19ceb41d132954e
Author: Salvatore Sanfilippo antirez@gmail.com>
Date: Sun Feb 19 15:02:37 2017 +0000

 ARM: Use libc malloc by default.

 I'm not sure how much test Jemalloc gets on ARM, moreover
 compiling Redis with Jemalloc support in not very powerful
 devices, like most ARMs people will build Redis on, is extremely
 slow. It is possible to enable Jemalloc build anyway if needed
 by using "make MALLOC=jemalloc".

其實在 git 體系中,分支名、commit、標簽等擁有幾乎相同的含義,所以在很多場景下可以擴展互換,比如 git log 后面加上分支名就可以查詢指定分支的提交記錄,如果加上 commit 就會查詢這個 commit 之前的提交記錄,如果加上標簽,就可以查詢這個標簽之前的提交記錄,比如我們加一個 commit 試試:

$ git log -2 7329cc39818a05c168e7d1e791afb03c089f1933
commit 7329cc39818a05c168e7d1e791afb03c089f1933 (origin/arm, arm)
Author: Salvatore Sanfilippo antirez@gmail.com>
Date: Sun Feb 19 15:07:08 2017 +0000

 ARM: Avoid fast path for BITOP.

 GCC will produce certain unaligned multi load-store instructions
 that will be trapped by the Linux kernel since ARM v6 cannot
 handle them with unaligned addresses. Better to use the slower
 but safer implementation instead of generating the exception which
 should be anyway very slow.

commit 4e9cf4cc7ed4b732fc4bb592f19ceb41d132954e
Author: Salvatore Sanfilippo antirez@gmail.com>
Date: Sun Feb 19 15:02:37 2017 +0000

 ARM: Use libc malloc by default.

 I'm not sure how much test Jemalloc gets on ARM, moreover
 compiling Redis with Jemalloc support in not very powerful
 devices, like most ARMs people will build Redis on, is extremely
 slow. It is possible to enable Jemalloc build anyway if needed
 by using "make MALLOC=jemalloc".

因為 commit id 就是之前的 arm 分支最新的記錄,所以這個命令等價于 git log -2 arm

查詢指定 commit 之間的提交記錄

如果想查詢兩個 commit 之前的提交記錄,可以將兩個 commit id 依次放在命令后面并用 .. 連接就可以了,格式為 git log commit1..commit2,需要注意的是這樣查詢出來的提交記錄列表中不包含 commit1,其實列舉出的就是 commit1 之后又做了哪些修改提交。

$ git log e15528bf1da1f1232fd08801ad382c915be94662..7bf665f125a4771db095c83a7ad6ed46692cd314
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

這個特性有一個應用就是在 merge 分支之前可以查詢究竟會 merge 哪些記錄,常見的用法比如 git log feature..dev 就是列舉出 feature 分支合并到 dev 分支將要合并的提交記錄有哪些。

$ git log 6.0..unstable
commit 324e22accf457edc996971bc97f5474349cd7c4c (unstable)
Author: antirez antirez@gmail.com>
Date: Fri Dec 20 12:29:02 2019 +0100

 Fix ip and missing mode in RM_GetClusterNodeInfo().

查詢指定文件的提交記錄

查詢指定文件的提交記錄一般直接在 git log 命令后面跟上文件名就可以,但是為了避免和分支名產生分歧,所以通常在文件名前面加上 -- 用來區分,-- 這個標識符就是用來防止混淆的,放在 -- 前面的是分支名,放在后面的是文件名,相同的作用不僅僅在 git log 命令中,在其他命令比如 git checkout 中也有相同的用法。

$ git log -2 -- redis.conf
commit 7a536c2912be1fd9f62b26b7022a00644c88ef8b
Author: Yossi Gottlieb yossigo@users.noreply.github.com>
Date: Fri Jul 10 11:33:47 2020 +0300

 TLS: Session caching configuration support. (#7420)

 * TLS: Session caching configuration support.
 * TLS: Remove redundant config initialization.

 (cherry picked from commit 3e6f2b1a45176ac3d81b95cb6025f30d7aaa1393)

commit 8312aa27d47c0befcf69eb74d0a5dc19745ffd32
Author: antirez antirez@gmail.com>
Date: Mon Jun 22 11:21:21 2020 +0200

 Clarify maxclients and cluster in conf. Remove myself too.

 (cherry picked from commit 59fd178014c7cca1b0c668b30ab0d991dd3030f3)

顯示格式

git log 除了可以篩選提交記錄,還可以控制顯示格式,普通不加參數,會顯示作者、郵件、提交描述信息、日期等信息。

通過添

$ git log -1
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.

加參數可以控制和改變顯示格式,下面來看幾條常見的

顯示單行信息

git log 默認會顯示多行信息,使用 --oneline 后每條提交記錄只顯示一行信息,可以在一屏幕中查看到更多的信息

$ git log -10 --oneline
7bf665f12 (HEAD -> 6.0, tag: 6.0.6, origin/6.0) Redis 6.0.6.
a5696bdf4 Run daily CI on PRs to release a branch
e15528bf1 Adds SHA256SUM to redis-stable tarball upload
e28aa99af Support passing stack allocated module strings to moduleCreateArgvFromUserFormat (#7528)
305143004 Send null for invalidate on flush (#7469)
29b20fd52 Notify systemd on sentinel startup (#7168)
5b3668121 Add registers dump support for Apple silicon (#7453)
0f75036c0 correct error msg for num connections reaching maxclients in cluster mode (#7444)
b1a01fda9 Fix command help for unexpected options (#7476)
83f55f61a Refactor RM_KeyType() by using macro. (#7486)

顯示每條記錄中文件修改的具體行數和行體統計

使用 --stat 參數就可以顯示每條記錄的中修改文件的具體行數和行數統計

$ git log -2 --stat
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.

 00-RELEASENOTES | 245 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/help.h | 4 +-
 src/version.h | 2 +-
 3 files changed, 248 insertions(+), 3 deletions(-)

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

 .github/workflows/daily.yml | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

顯示每條提交記錄中文件的增加行數和刪除行數

使用 --numstat 參數會把 --stat 參數中合并顯示的修改行數拆分成增加行數和刪除行數

$ git log -2 --numstat
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.

245 0 00-RELEASENOTES
2 2 src/help.h
1 1 src/version.h

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

4 2 .github/workflows/daily.yml

依次羅列各提交記錄中每個文件中增加的行數和刪除的行數

要想達到這個目的需要用到 --prety=tformat: --numstat 參數,這樣的顯示格式便于統計

$ git log -2 --pretty=tformat: --numstat
245 0 00-RELEASENOTES
2 2 src/help.h
1 1 src/version.h
4 2 .github/workflows/daily.yml

統計修改的代碼行數

有了前面的鋪墊,想要統一修改的行數就容易了,只要配合 awk 工具就可以完成統計了

$ $ git log -2 --pretty=tformat: --numstat | awk '{adds += $1; subs += $2; diffs += $1 - $2} END {printf "added lines: %s removed lines: %s, diff lines: %s\n", adds, subs, diffs}'
added lines: 252 removed lines: 5, diff lines: 247

還可以統計兩個分支相差的代碼行數

$ git log 6.0..unstable --pretty=tformat: --numstat | awk '{adds += $1; subs += $2; diffs += $1 - $2} END {printf "added lines: %s removed lines: %s, diff lines: %s\n", adds, subs, diffs}'
added lines: 5 removed lines: 2, diff lines: 3

到這里可以發現前面的知識都可以用上,前面篩選的參數變了,得到的結果就變了,我們可以根據需求來調整不同的參數

總結

  • git log 就是一部代碼庫記錄的“史書”,對于曾經所做的修改可以做到有史可查
  • git log 的選項參數可以分為篩選參數和格式參數,篩選參數可以選擇記錄范圍,格式參數可以控制顯示樣式
  • 統計就是按照一定規律來將數據進行匯總,在進行匯總前需要將數據進行整理,這樣匯總的工作才會更加順利

到此這篇關于git log根據特定條件查詢日志并統計修改的代碼行數的文章就介紹到這了,更多相關git log統計修改代碼行數內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python實現一個Git日志統計分析的小工具
  • 使用python分析git log日志示例
  • 總結PHP代碼規范、流程規范、git規范
  • Git的使用規范流程總結
  • git提交驗證規范并自動生成日志文件的方法

標簽:丹東 錫林郭勒盟 襄陽 遵義 雙鴨山 莆田 鄂爾多斯 哈爾濱

巨人網絡通訊聲明:本文標題《git log根據特定條件查詢日志并統計修改的代碼行數》,本文關鍵詞  git,log,根據,特定條件,查詢,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《git log根據特定條件查詢日志并統計修改的代碼行數》相關的同類信息!
  • 本頁收集關于git log根據特定條件查詢日志并統計修改的代碼行數的相關信息資訊供網民參考!
  • 推薦文章
    亚洲第一色在线| 青青久久国产成人免费网站| 亚欧成人乱码一区二区| 国产原创中文字幕| 成人免费观看视频| 国产91精品露脸国语对白| 免费毛片播放| 99久久精品国产高清一区二区| 超级乱淫黄漫画免费| 久久久久久久免费视频| 黄视频网站在线观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 黄色短视频网站| 高清一级做a爱过程不卡视频| 九九九网站| 国产一级强片在线观看| 精品久久久久久中文字幕2017| 日韩专区一区| 精品国产三级a∨在线观看| 久久精品道一区二区三区| 午夜欧美成人久久久久久| 青青久在线视频| 免费国产在线观看| 精品视频在线观看一区二区三区| 国产高清在线精品一区二区| 久久久成人网| 久久精品大片| 精品久久久久久中文| 日韩中文字幕在线播放| 九九免费精品视频| 国产视频一区二区在线播放| 亚久久伊人精品青青草原2020| 天天做日日爱| 欧美激情一区二区三区在线 | 日韩在线观看视频免费| 精品国产香蕉伊思人在线又爽又黄| 精品国产一区二区三区精东影业| 免费国产一级特黄aa大片在线| 国产视频一区二区在线播放| 国产原创中文字幕| 精品在线观看一区| 二级片在线观看| 韩国三级一区| 成人av在线播放| 91麻豆精品国产自产在线观看一区| 欧美一级视频高清片| 亚久久伊人精品青青草原2020| 亚洲精品久久玖玖玖玖| 国产麻豆精品视频| 久久国产精品自由自在| 四虎影视久久| 精品久久久久久中文字幕2017| 韩国毛片免费大片| 日韩综合| 午夜在线影院| 青青久久网| 国产麻豆精品高清在线播放| 国产成人精品综合久久久| 日韩男人天堂| 你懂的日韩| 欧美激情中文字幕一区二区| 国产91精品一区二区| 精品在线视频播放| 韩国三级一区| 九九精品久久| 日日夜夜婷婷| 成人高清护士在线播放| 国产伦理精品| 国产原创中文字幕| 亚洲第一页色| 91麻豆精品国产自产在线观看一区| 国产亚洲免费观看| 国产亚洲男人的天堂在线观看| 欧美日本韩国| 久久久久久久久综合影视网| 久久福利影视| 精品在线视频播放| 国产韩国精品一区二区三区| 四虎影视库| 99色视频| 91麻豆高清国产在线播放| 国产亚洲免费观看| 一本高清在线| 欧美大片一区| 精品国产一区二区三区久久久狼| 一本高清在线| 国产高清在线精品一区a| 青青久久网| 亚洲精品中文一区不卡| 可以免费在线看黄的网站| 精品在线观看国产| 中文字幕一区二区三区精彩视频| 欧美激情中文字幕一区二区| 亚洲女人国产香蕉久久精品| a级毛片免费全部播放| 天天做日日爱| 精品国产一区二区三区精东影业| 日韩av东京社区男人的天堂| 黄视频网站在线观看| 99色视频| 香蕉视频一级| 夜夜操天天爽| 久久精品店| 欧美激情一区二区三区视频 | 九九精品影院| 国产原创中文字幕| 超级乱淫黄漫画免费| 精品视频在线观看视频免费视频| 国产一区国产二区国产三区| 日韩综合| 99色视频在线观看| 日韩中文字幕在线播放| 欧美激情一区二区三区在线| 黄视频网站在线免费观看| 色综合久久手机在线| 九九热国产视频| 国产不卡福利| 99久久视频| 成人在免费观看视频国产| 免费毛片基地| 国产成人精品综合久久久| 日韩专区一区| 精品国产三级a∨在线观看| 韩国三级香港三级日本三级| 国产亚洲精品aaa大片| 精品国产一区二区三区久久久狼| 成人影视在线观看| 欧美大片aaaa一级毛片| 麻豆污视频| 国产成人欧美一区二区三区的| a级毛片免费观看网站| 国产成人女人在线视频观看| 日日爽天天| 国产网站免费| 韩国毛片基地| 久久久久久久免费视频| 欧美爱爱网| 亚欧视频在线| 精品视频在线看 | 免费国产在线视频| 亚洲第一页乱| 亚洲精品影院| 国产伦理精品| 国产伦精品一区二区三区无广告 | 精品国产三级a∨在线观看| 黄视频网站免费观看| 国产综合91天堂亚洲国产| 精品视频在线观看视频免费视频| 中文字幕一区二区三区 精品| 国产精品1024在线永久免费| 国产成人女人在线视频观看| 高清一级做a爱过程不卡视频| 精品久久久久久中文字幕2017| 国产a视频| 99色视频在线观看| 国产麻豆精品视频| 精品久久久久久综合网| 99久久精品国产麻豆| 久久久久久久久综合影视网| 成人影院久久久久久影院| 精品视频在线观看一区二区| 午夜精品国产自在现线拍| 国产伦久视频免费观看 视频| 午夜欧美成人香蕉剧场| 美女免费精品视频在线观看| 韩国毛片基地| 国产伦久视频免费观看 视频| 尤物视频网站在线| 天天做人人爱夜夜爽2020毛片| 成人免费一级毛片在线播放视频| 日韩免费在线视频| 午夜欧美成人久久久久久| 精品国产三级a∨在线观看| 国产一区二区精品| 九九九网站| 国产视频一区二区在线播放| 成人免费网站视频ww| 中文字幕一区二区三区精彩视频| 午夜在线影院| 午夜在线影院| 亚洲 国产精品 日韩| 天天做日日干| 在线观看成人网| 青青久在线视频| 九九久久99| 青青久久网| 99色视频| 精品国产一区二区三区久久久狼| 九九久久99综合一区二区| 午夜激情视频在线观看 | 精品视频免费看| 成人免费观看男女羞羞视频| 一 级 黄 中国色 片| 精品视频一区二区三区| 99久久精品国产国产毛片| 日本在线www| 日韩中文字幕在线观看视频| 夜夜操天天爽| 国产极品精频在线观看| 九九精品久久|