git logは、特定の条件に従ってログを検索し、修正コードの行数を統計します。
前言
年齢の増加と知識の蓄積に伴って、最近ではよく朗らかな感じがします。あるいはすでに存在しているものに対して、突然新しい認識ができました。たとえば統計という言葉は早くから接触しました。これはどういう意味かは考えられませんでした。つまり、似たような解釈です。意図的にこの言葉の意味を勉強していませんでしたが、毎日の生活の中で、知らず知らずのうちに要約してまとめました。
統計したいならデータソースが必要です。
gitロゴ
統計する前に、データを整理しなければなりません。ごちゃごちゃしたデータは統計できないわけではありません。ただ計算するのがもっと面倒なので、統計をとる前に、まずデータを規範化しなければなりません。
条件フィルタ
最近のロゴを調べます。
このオプションパラメータは、
クエリー202-01-01から2020-04-01までの提出履歴
1年前の提出記録を調べる。
ここで
クエリ指定commt間の提出履歴
二つのcommtの前の提出記録を調べたいなら、二つのcommt idを命令の後に順次置いて
クエリー指定ファイルの提出記録は、一般的に
通過します
1行の情報を表示
この目的を達成するには
前のマットがあれば、統一的に修正したい行数は簡単です。
締め括りをつける を制御することができる。統計は一定の規則に基づいてデータをまとめ、纏める前にデータを整理する必要があり、これによって纏めた仕事がよりスムーズになります。
ここでgit logsについて、特定の条件に基づいてログを検索し、修正コードの行数を統計する記事を紹介しました。git logsに関する統計をもっと多く修正しました。コードの行数については、以前の記事を検索してください。または、下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。
年齢の増加と知識の蓄積に伴って、最近ではよく朗らかな感じがします。あるいはすでに存在しているものに対して、突然新しい認識ができました。たとえば統計という言葉は早くから接触しました。これはどういう意味かは考えられませんでした。つまり、似たような解釈です。意図的にこの言葉の意味を勉強していませんでしたが、毎日の生活の中で、知らず知らずのうちに要約してまとめました。
統計したいならデータソースが必要です。
git log
コマンドはちょうどこのデータソースを提供できます。git log
自体はログを表示するコマンドです。ログに記録されているのはコードバンクの変化を記述する「史書」のようなデータです。歴史を説明するには大量のデータサポートが必要です。修正コードラインを統計したいです。私たちは歴史記録から計算する部分を見つければいいです。gitロゴ
統計する前に、データを整理しなければなりません。ごちゃごちゃしたデータは統計できないわけではありません。ただ計算するのがもっと面倒なので、統計をとる前に、まずデータを規範化しなければなりません。
git log
オープンソースライブラリを例にとって、redis
分岐に切り替えて、6.0
に記録を提出して、データソースとして位置づけて、7bf665f125a4771db095c83a7ad6ed46692cd314
の一般的な問い合わせ方法を勉強します。実は、異なる条件で照会することは整理、分類データの処理です。git log
の使用法は様々です。私たちは主に二つの種類に関心を持っています。それぞれ条件選別と表示形式です。条件フィルタ
git log
条件スクリーニングのオプションは非常に多く、条件スクリーニングを使用するオプションは、表示される提出記録の範囲に影響を及ぼし、表示したい提出記録を検索する。最近のロゴを調べます。
git log
パラメータを使用して、最近の提出履歴を調べられます。
$ git log -3
commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
Author: Oran Agra <[email protected]>
Date: Sun Jul 19 14:00:20 2020 +0300
Redis 6.0.6.
commit a5696bdf4f2687ab45f633ccb7cdc4ee9c2f957d
Author: Oran Agra <[email protected]>
Date: Sun Jul 19 15:33:21 2020 +0300
Run daily CI on PRs to release a branch
commit e15528bf1da1f1232fd08801ad382c915be94662
Author: Itamar Haber <[email protected]>
Date: Thu Jul 16 21:31:36 2020 +0300
Adds SHA256SUM to redis-stable tarball upload
(cherry picked from commit 5df0a64d30e7815c0a4a75a80f165fdee0bd1db6)
クエリー指定の作成者の提出-number
パラメータを使用して、指定された著者の提出記録を照会することができる。
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 <[email protected]>
Date: Sun Jul 19 14:00:20 2020 +0300
Redis 6.0.6.
commit a5696bdf4f2687ab45f633ccb7cdc4ee9c2f957d
Author: Oran Agra <[email protected]>
Date: Sun Jul 19 15:33:21 2020 +0300
Run daily CI on PRs to release a branch
指定された時間帯のログを検索します。このオプションパラメータは、
--author
、--since
、--until
、--before
、--after
など、意味から分かりやすく、どのように使用するかが分かります。クエリー202-01-01から2020-04-01までの提出履歴
$ git log -2 --after=2020-01-01 --before=2020-04-01
commit 957e917a84ac9979f18145a4d0b53386f5ce4fd9 (tag: 6.0-rc3)
Author: antirez <[email protected]>
Date: Tue Mar 31 17:56:04 2020 +0200
Redis 6.0-RC3.
commit ef1b1f01a84e969ea368e7fdbaf0d10615743269
Author: antirez <[email protected]>
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 <[email protected]>
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 <[email protected]>
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
パラメータを使用して、指定された内容を含む提出記録をフィルタリングすることができます。ここでは、comit記述において、条件に合致する提出をフィルタリングすることを意味します。
$ git log -2 --grep='client'
commit 0f75036c07db48dfcf605e090216a4447edc38fc
Author: Wen Hui <[email protected]>
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 <[email protected]>
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
を使用してデフォルトで検索したのは、現在のブランチの提出記録であり、他のブランチの記録を照会したいなら、直接にコマンドの後にブランチ名をつければいい。
$ git log -2 arm
commit 7329cc39818a05c168e7d1e791afb03c089f1933 (origin/arm, arm)
Author: Salvatore Sanfilippo <[email protected]>
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 <[email protected]>
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システムでは、分岐名、comit、ラベルなどはほぼ同じ意味を持っていますので、多くの場面で交換を拡張できます。例えば、arm
の後に分岐名を加えると、指定された分岐の提出記録が調べられます。comitを加えると、このcomitの前の提出記録が調べられます。ラベルを付けると、このラベルを調べる前の提出記録、たとえば私達はcomitを追加してみます。
$ git log -2 7329cc39818a05c168e7d1e791afb03c089f1933
commit 7329cc39818a05c168e7d1e791afb03c089f1933 (origin/arm, arm)
Author: Salvatore Sanfilippo <[email protected]>
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 <[email protected]>
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".
comit idは以前のarm分岐の最新記録であるため、このコマンドはgit log
に相当する。クエリ指定commt間の提出履歴
二つのcommtの前の提出記録を調べたいなら、二つのcommt idを命令の後に順次置いて
git log -2 arm
で接続すればいいです。フォーマットは..
です。このように調べられた提出記録リストにはcomit 1が含まれていません。実は、commt 1の後にどのような修正提出が行われていますか?
$ git log e15528bf1da1f1232fd08801ad382c915be94662..7bf665f125a4771db095c83a7ad6ed46692cd314
commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
Author: Oran Agra <[email protected]>
Date: Sun Jul 19 14:00:20 2020 +0300
Redis 6.0.6.
commit a5696bdf4f2687ab45f633ccb7cdc4ee9c2f957d
Author: Oran Agra <[email protected]>
Date: Sun Jul 19 15:33:21 2020 +0300
Run daily CI on PRs to release a branch
この特性は、Mergeの分岐前にどのような記録が行われているかを調べることができるアプリケーションがあります。一般的な使い方としては、例えばgit log commit1..commit2
はfeatureの分岐を列挙してdev分岐に統合する場合、どのような提出記録がありますか?
$ git log 6.0..unstable
commit 324e22accf457edc996971bc97f5474349cd7c4c (unstable)
Author: antirez <[email protected]>
Date: Fri Dec 20 12:29:02 2019 +0100
Fix ip and missing mode in RM_GetClusterNodeInfo().
指定ファイルの提出履歴の照会クエリー指定ファイルの提出記録は、一般的に
git log feature..dev
コマンドの後に直接ファイル名について行けば良いが、分岐名との相違を避けるために、通常はファイル名の前にgit log
を付けて区別する。--
は、混淆を防止するために使用され、--
の前に置くのは分岐名であり、後に置くのはファイル名である。同じ作用は、--
コマンドだけではなく、他のコマンド、例えばgit log
にも同じ使用法がある。
$ git log -2 -- redis.conf
commit 7a536c2912be1fd9f62b26b7022a00644c88ef8b
Author: Yossi Gottlieb <[email protected]>
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 <[email protected]>
Date: Mon Jun 22 11:21:21 2020 +0200
Clarify maxclients and cluster in conf. Remove myself too.
(cherry picked from commit 59fd178014c7cca1b0c668b30ab0d991dd3030f3)
書式を表示git checkout
は、フィルタ提出記録に加えて、表示フォーマットを制御してもよく、通常はパラメータを加えずに、著者、メール、記述情報、日付などの情報を表示します。通過します
$ git log -1
commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
Author: Oran Agra <[email protected]>
Date: Sun Jul 19 14:00:20 2020 +0300
Redis 6.0.6.
パラメータを追加すると、表示形式を制御したり、変更したりできます。1行の情報を表示
git log
はデフォルトでは複数行の情報を表示します。git log
を使用して、各送信記録は1行の情報だけを表示します。1画面でより多くの情報を見ることができます。
$ 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)
レコードごとにファイルの変更の具体的な行数と行数を表示します。--oneline
パラメータを使用すると、レコードごとに修正されたファイルの具体的な行数と行数統計が表示されます。
$ git log -2 --stat
commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
Author: Oran Agra <[email protected]>
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 <[email protected]>
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(-)
各サブミットの記録中のファイルの増行数と削除行数を表示します。--stat
パラメータを使用すると、--numstat
パラメータに統合表示された修正された行の数を、行数の増加と削除行数に分割します。
$ git log -2 --numstat
commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
Author: Oran Agra <[email protected]>
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 <[email protected]>
Date: Sun Jul 19 15:33:21 2020 +0300
Run daily CI on PRs to release a branch
4 2 .github/workflows/daily.yml
各提出記録の各ファイルに追加された行数と削除された行数を順に並べます。この目的を達成するには
--stat
パラメータが必要です。このような表示形式は統計的に便利です。
$ 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
変更コードの行数を統計します。前のマットがあれば、統一的に修正したい行数は簡単です。
--prety=tformat: --numstat
ツールと協力すれば統計が完了します。
$ $ 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
", 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
", adds, subs, diffs}'
added lines: 5 removed lines: 2, diff lines: 3
ここに行くと、前の知識は全部使えます。前のフィルタのパラメータが変わって、得られた結果が変わります。必要に応じて異なるパラメータを調整できます。締め括りをつける
awk
はコードブックに記録された「史書」であり、過去に作成された修正については過去の記録があるようにすることができます。git log
のオプションパラメータは、フィルタパラメータとフォーマットパラメータに分けられ、フィルタパラメータは記録範囲を選択でき、フォーマットパラメータは表示スタイルここでgit logsについて、特定の条件に基づいてログを検索し、修正コードの行数を統計する記事を紹介しました。git logsに関する統計をもっと多く修正しました。コードの行数については、以前の記事を検索してください。または、下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。