Gitの小ネタおれおれAdvent Calendar 2022 – 20 日目

git log を応用して 1 日分のコミットメッセージの一覧を表示して日報として利用できます。

日報を出力

$ git log --all --author=ginpei --after="$(date '+%F 00:00')" --pretty=format:'- %s'
- PRJ-1234 ボタンの綴り誤り
- PRJ-1107 カートの表示順が逆になっている
- PRJ-1274 エラーダイアログが小さな画面で崩れる

オプションを順に解説します。

--all

通常 git log は今いるブランチのコミットだけを表示します。日報ではまだマージしていないブランチでも表示したい気がするので、--all でそれらも表示されるようにします。

--author=ginpei

コミット作者を絞り込みます。例えば --author ginpei で “ginpei”も “Ginpei Takanashi” も “ginginpeipei” も引っかかります。

値は正規表現です。--author g.np.. のようにもできます。ちなみに正規表現の種類もいくつかあって別に --extended-regexp オプションなんかも。

具体的にはコミットログの “Author:” の行が対象です。つまりメールアドレスの方でも絞り込める。

--after="$(date '+%F 00:00')"

ログ出力の期間を本日午前 0 時からに絞り込みます。

本当は --after=yesterday とかが使えれば良いなと思ってたんだけど、なんか昨日分も出てきてしまいました。日付じゃなくて過去 24 時間とかそういう感じなのかな。

$(xxx)

シェルの機能で、xxx を実行してその結果に置き換えます。

date '+%F 00:00'

Linux とかの機能で、date で現在日時を表示します。

後半 '+…' が出力書式です。%F が日付。時刻は固定なので直接 00:00 を記述します。

$ date '+%F 00:00'
2022-12-24 00:00

他の書き方は man date で確認してください。

--pretty=format:'- %s'

ログの出力書式を指定します。

'- %s' のうち冒頭の - はそのまま出てきます。日本語の中黒「・」とかでも良いかと。%s の方はコミットの題 (subject) に置き換えられます。

他に時刻とか出したいならまた %ad とか。

目視確認用

--pretty を与えなければ普通に出てきます。こっちで出して確認しつつ思い出しつつ載せづらいやつを無視しつつコミットメッセージをコピペってのでも良いかもです。

$ git log --all --author=ginpei --after="$(date '+%F 00:00')"

ショートカット

別名 alias を作っておくと一発で出てくるので常用するならおすすめ。

~/.gitconfig

[alias]
        daily = log --all --author=ginpei --after=\"$(date '+%F 00:00')\" --pretty=format:'- %s'
$ git daily
- PRJ-1234 ボタンの綴り誤り
- PRJ-1107 カートの表示順が逆になっている
- PRJ-1274 エラーダイアログが小さな画面で崩れる

おしまい

コミットメッセージはちゃんと書いておいてください。

参考