Gitのログから最終更新日を取得する
Astro で Web サイトを制作中に、最終更新日を自動で取得して表示したくなったため、AI にスクリプトを組んでもらった。その際に出力された次の Git コマンドが、具体的にどのような仕組みで動いているのか調べてみた。
git log -1 --format=%ai -- "${filePath}"コマンドの解説
git log は、リポジトリのコミット履歴を表示するコマンドだ。ここにオプションを組み合わせることで、特定のファイルの情報をピンポイントで抽出している。
オプション
-1: 出力するコミット履歴の数を指定するオプション。今回は最新の 1 件のみに絞り込んでいる。--format=%ai: コミット日時をYYYY-MM-DD HH:MM:SS +/-HHMMという形式で出力する。%aiのaは Author(作者)、iは ISO 8601 風のフォーマットを意味している。- ちなみに、大文字の
%aIを指定すると、厳密な ISO 8601 形式(YYYY-MM-DDTHH:MM:SS+/-HHMM)での出力になる。 - 補足として、
%ciを使うと Committer(コミッター)の日時、つまりそのコミットがリポジトリに実際に反映された日時を取得できる。
- ちなみに、大文字の
-- "${filePath}": 対象とするファイルのパスを指定している。手前の--は、コマンドのオプションとファイルパスの境界を明確に区切るための記号。
--format=%ad --date=iso との比較
気になったので --format=%ad --date=iso という記述とも比較してみたが、結果は同じ形式で日時が返ってきた。記述の短さを考えると、今回出力された --format=%ai の方が簡潔で扱いやすそうだ。
まとめ
git log -1 --format=%ai -- "${filePath}"を使うことで、特定のファイルの最終更新日(Author 日時)を取得できる。-1で最新の 1 件のみを出力し、処理の無駄を省いている。--format=%aiは Author(作者)の日時、--format=%ciは Committer(コミッター)の日時を出力する。