Skip to content
Mash+

Gitのログから最終更新日を取得する

Astro で Web サイトを制作中に、最終更新日を自動で取得して表示したくなったため、AI にスクリプトを組んでもらった。その際に出力された次の Git コマンドが、具体的にどのような仕組みで動いているのか調べてみた。

Terminal window
git log -1 --format=%ai -- "${filePath}"

コマンドの解説

git log は、リポジトリのコミット履歴を表示するコマンドだ。ここにオプションを組み合わせることで、特定のファイルの情報をピンポイントで抽出している。

オプション

  • -1 : 出力するコミット履歴の数を指定するオプション。今回は最新の 1 件のみに絞り込んでいる。
  • --format=%ai : コミット日時を YYYY-MM-DD HH:MM:SS +/-HHMM という形式で出力する。%aia は 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(コミッター)の日時を出力する。

参考