git log で特定の期間のログだけを出力する方法

Git の git log コマンドで期間を絞ってログを出力する方法についてです。 歴史が長くコミットの多い OSS のコミットログを見たいとき等に便利です。

早速結論ですが、以下のオプションが使えるのでこれを利用すると OK です。

特定の日時 以降 のものに絞る:

--after
--since

特定の日時 以前 のものに絞る:

--before
--until

例えば次のように使用します。

git log --after '2018/10/10' --before '2018/10/17'

日時のフォーマットにはさまざまなものが使えます。

# 絶対的な日時での指定
# Y-m-d
git log --after '2018-05-27'
# Y/m/d
git log --after '2018/05/27'
# d/m/Y
git log --after '27/05/2018'
# ISO 8601 
git log --after '2018-05-27T03:32:00+09:00'
# Y-m-d H:M:S
git log --after '2018-05-27 00:15:00'
# UNIX タイムスタンプ
git log --after '1527359520'
# 相対的な日時での指定
git log --after 'yesterday'
git log --after 'last Monday'
git log --after '1 month 3 days ago'

公式にどのようなフォーマットがサポートされているのかを知りたくて少し調べてみたのですが、該当するドキュメントが見つけられずわかりませんでした……

指定された日付がおかしい場合は、日付のパースが途中まで成功したらその値を使用し、完全に失敗したらオプションが指定されなかったような挙動をするようです。

--after--since--before--until で何らかの違いがあるのかなと思ったのですが、私が確認した範囲では特に違いはありませんでした。単純に覚えやすい方を使うのでよいようです。