🐙

今日Gitにコミットしたコードの行数を数えるエイリアス

2021/10/17に公開1

今日1日、自分がGitにコミットしたコードの行数を数えるaliasを紹介します。
~/.gitconfigを開き、以下のエイリアスを追加します。

エイリアス

[alias]
  today-numstat = !"f(){ \
    git log \
    --numstat \
    --branches \
    --no-merges \
    --since=midnight \
    --author=\"$(git config user.name)\" \
    | awk 'NF==3 {a+=$1; d+=$2} END { \
      printf(\"%d (\\x1b[32m+%d\\033[m, \\x1b[31m-%d\\033[m)\\n\", a+d, a, d)\
    }'; \
  };f"

見やすさのために複数行に分けていますが、1行にしたり適当なサイズでオプションを連結しても問題ありません。
今日1日の作業を取るために、複数ブランチ上での作業を含んで取得、マージコミットを除外、その日の深夜から今を基準に、自分のコミットのみを取得し、git log --numstatで変更の詳細を取得します。
その後awkコマンドで追加/削除行数をそれぞれ取得して足し合わせ、出力するようにしています。
printfの中が複雑に見えますが、追加行数の数値を緑に、削除行数の数値を赤に色を変える処理を挟んでいます。

実行

いい感じに出力されます。

参考にした記事

https://qiita.com/Night___/items/359ff81f358968567a45

この記事で紹介されていた方法を今日に範囲を絞って今日の作業量を出力できるようにしました。

今日のコミットの一覧を出力する

はるか昔に書いた記事を貼っておきます。

https://qiita.com/sgr-ksmt/items/65ddde68173dab9a98e9

Discussion

手羽先手羽先

ありがとうございます!とても便利で助かりました。