1.背景
ソフトウェア開発プロセスにおいて、コードの行数は、コードの品質と開発効率を測定するために使用できる非常に重要な指標です。Git は、コード変更の履歴を記録および追跡できる、一般的なバージョン管理システムです。Git を使用すると、コードの行数を簡単にカウントできます。以下に、一般的に使用される Git コマンドと、コードの行数をカウントするための説明を示します。
2. カウントする git commitId 情報を見つけます。
現在のブランチの最も古いコミット (つまり、最も古い CommitId) を表示します: git log --reverse <branch-name> | head -1
現在のブランチの最新のコミットを表示します: git log <ブランチ名> | head -1
master
現在のブランチが最初にブランチから分岐した場所を表示します: git log --reverse HEAD..$(git merge-base HEAD master)
3. commitId に対応する送信が正しいかどうかを確認する
指定されたcommitId
コミット情報と変更を表示します: git show ${commitId}
ブランチ上の誰かの最初のコミットを表示する: git log --reverse <branch-name> --author="null <[email protected]>" | head -1
コミットの前のコミットのコミット ID を見つけます: git log --pretty=oneline 0b971fa90bfbbdcae0357a1d6efa4da432d7f0d0^
4. コードの行数を数える
(1) time rangeコマンドで送信行数を問い合わせる
git log [某个分支名] --author="[某个作者]" --since="[起始日期]" --until="[结束日期]" --pretty=tformat: --numstat --pretty="%H" | awk 'NF==3 {plus+=$1; minus+=$2; total += $1 + $2;} END {printf("%d,%d,%d", plus, minus, total)}'
コマンドの意味
ここでgit log
、 コマンドはコミット履歴を取得するために使用され、--author
オプションはコミッタを指定するために使用され、--since
オプション--until
は時間範囲を指定するために使用されます。--pretty=tformat: --numstat --pretty="%H"
オプションは、送信されたコミット ID と追加および削除された行数を出力するために使用されます。最後に、awk
このコマンドを使用して行数をカウントします。
デモを使用する
git log master --author="test <[email protected]>" --since="2022-12-31" --until="2023-03-31" --pretty=tformat: --numstat --pretty="%H" | awk 'NF==3 {plus+=$1; minus+=$2; total += $1 + $2;} END {printf("%d,%d,%d", plus, minus, total)}'
(2) 時間範囲内で送信された行数を問い合わせ、範囲コマンドをコミット
git log [某个分支名] --author="[某个作者]" --since="[起始日期]" --until="[结束日期]" --pretty=tformat: --numstat --pretty="%H" [startCommit]..[endCommit] | awk 'NF==3 {plus+=$1; minus+=$2; total += $1 + $2;} END {printf("%d,%d,%d", plus, minus, total)}'
コマンドの意味
${startCommit}..${endCommit}
コミット範囲、つまりstartCommit
から までのendCommit
コミット履歴を表します。他のオプションとコマンドは前のコマンドと同様ですが、最後に、awk
このコマンドは行数をカウントするためにも使用されます。
デモを使用する
git log master --author="test <[email protected]>" --since="2022-12-31" --until="2023-03-31" --pretty=tformat: --numstat --pretty="%H" ${startCommit}..${endCommit} | awk 'NF==3 {plus+=$1; minus+=$2; total += $1 + $2;} END {printf("%d,%d,%d", plus, minus, total)}'