目次
はじめに
開発を進める中で、コミット履歴を確認する場面は頻繁にあります。しかし、デフォルトのgit logでは情報量が多すぎたり、逆に必要な情報が見つけにくかったりすることがあります。今回は、git logコマンドの各種オプションとフォーマット指定子について、使い方と活用方法を備忘録としてまとめます。
git log コマンドの基本
git logは、Gitリポジトリ(プロジェクトの変更履歴を保存する場所)のコミット履歴を表示するコマンドです。オプションなしで実行すると、以下のような詳細な情報が表示されます。
commit a3f8c2b1d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9
Author: Taro Yamada <taro@example.com>
Date: Sat Jan 25 14:30:22 2026 +0900
Add user login feature
Implemented authentication and session management
この表示には、コミットハッシュ(コミットを識別する文字列)、作成者、日時、コミットメッセージが含まれています。しかし、状況によってはもっと簡潔に表示したり、特定の情報だけを抽出したりしたいことがあります。
主要なオプション
git logには、表示内容を制御するための様々なオプションが用意されています。
【表示件数の制限】
-n または -数字
表示するコミット数を指定します。-n 5または-5で最新の5件のみ表示されます。
git log -5
履歴が長いプロジェクトでは、必要な範囲だけを確認できるため便利です。
--since, --until
日付や期間を指定してコミットを絞り込みます。
git log --since="2026-01-01"
git log --since="2 weeks ago"
git log --until="2026-01-31"
--sinceは指定した日時以降、--untilは指定した日時以前のコミットを表示します。特定の期間内の変更履歴を確認したいときに活用できます。
【表示形式の変更】
--oneline
各コミットを1行で表示します。短縮コミットハッシュとコミットメッセージの件名のみが表示されるため、全体の流れを素早く把握できます。
git log --oneline
実行結果の例は以下です。
a3f8c2b Add user login feature
b4e9d1a Fix navigation bug
c5f0e2b Update documentation
--graph
ブランチ(開発の分岐)とマージ(統合)の関係を視覚的に表示します。複数のブランチで並行して開発している場合、履歴の流れが分かりやすくなります。
git log --oneline --graph
実行結果の例は以下です。
* a3f8c2b Add user login feature
* b4e9d1a Merge branch 'feature/navigation'
|\
| * c5f0e2b Fix navigation bug
|/
* d6g1f3c Update documentation
--stat
各コミットで変更されたファイルと、追加・削除された行数を表示します。どのファイルがどの程度変更されたかを確認できます。
git log --stat
--patch または -p
各コミットの詳細な差分(変更内容)を表示します。実際にどのようなコードが追加・削除されたかを確認できます。
git log -p
【フィルタリング】
--author
特定の作成者によるコミットのみを表示します。チーム開発で特定のメンバーの作業内容を確認したいときに便利です。
git log --author="Taro Yamada"
部分一致で検索されるため、名字だけでも検索できます。
--grep
コミットメッセージに特定のキーワードを含むコミットのみを表示します。
git log --grep="bug"
このコマンドは、コミットメッセージに「bug」という文字列を含むコミットを検索します。
-- ファイルパス
特定のファイルやディレクトリに関連するコミットのみを表示します。
git log -- src/components/Header.js
ファイルの変更履歴を追跡したいときに活用できます。
【その他の便利なオプション】
--reverse
コミット履歴を古い順に表示します。デフォルトは新しい順ですが、プロジェクトの成長過程を時系列で確認したいときに便利です。
git log --reverse
--no-merges
マージコミット(ブランチを統合したコミット)を除外して表示します。実際の機能追加やバグ修正のコミットのみを確認できます。
git log --no-merges
--merges
逆に、マージコミットのみを表示します。ブランチの統合履歴を確認したいときに使用します。
git log --merges
【オプション一覧表】
| オプション | 説明 | 使用例 |
|---|---|---|
-n または -数字
|
表示件数を制限 | git log -5 |
--since |
指定日時以降のコミットを表示 | git log --since="2026-01-01" |
--until |
指定日時以前のコミットを表示 | git log --until="2026-01-31" |
--author |
特定の作成者のコミットのみ表示 | git log --author="Taro" |
--grep |
メッセージにキーワードを含むコミットを表示 | git log --grep="bug" |
--oneline |
各コミットを1行で表示 | git log --oneline |
--graph |
ブランチとマージを視覚的に表示 | git log --graph |
--stat |
変更されたファイルと行数を表示 | git log --stat |
-p または --patch
|
詳細な差分を表示 | git log -p |
--reverse |
古い順に表示 | git log --reverse |
--no-merges |
マージコミットを除外 | git log --no-merges |
--merges |
マージコミットのみ表示 | git log --merges |
--format |
表示形式をカスタマイズ | git log --format='%h %s' |
フォーマット指定子の一覧
--formatオプション(または--pretty=format)を使うと、表示内容を細かくカスタマイズできます。フォーマット指定子は%から始まる特殊な文字列で、コミット情報の各要素を表します。
【コミットに関する情報】
-
%H= コミットハッシュ(完全版、40文字) -
%h= コミットハッシュ(短縮版、通常7文字) -
%T= ツリーハッシュ(完全版) -
%t= ツリーハッシュ(短縮版) -
%P= 親コミットのハッシュ(完全版) -
%p= 親コミットのハッシュ(短縮版)
コミットハッシュはコミットを一意に識別するための文字列です。通常は短縮版で十分ですが、スクリプト(コマンドを組み合わせて一括実行できるよう記述したファイル)で厳密に扱う場合は完全版を使用します。
【作成者に関する情報】
-
%an= Author Name(作成者の名前) -
%ae= Author Email(作成者のメールアドレス) -
%ad= Author Date(作成日時) -
%ar= Author Date Relative(相対的な作成日時、例えば「2 days ago」) -
%at= Author Date Unix Timestamp(Unix時間形式) -
%ai= Author Date ISO 8601形式(YYYY-MM-DD HH:MM:SS形式)
作成者は、実際にコードを書いた人を指します。
【コミッターに関する情報】
-
%cn= Committer Name(コミッターの名前) -
%ce= Committer Email(コミッターのメールアドレス) -
%cd= Committer Date(コミット日時) -
%cr= Committer Date Relative(相対的なコミット日時) -
%ct= Committer Date Unix Timestamp -
%ci= Committer Date ISO 8601形式
コミッターは、実際にコミットをリポジトリに記録した人を指します。通常は作成者と同じですが、他の人が作成したパッチ(変更内容)を適用する場合などは異なることがあります。
【メッセージに関する情報】
-
%s= Subject(コミットメッセージの1行目、件名) -
%b= Body(コミットメッセージの本文、2行目以降) -
%B= Raw Body(件名と本文を含む完全なメッセージ) -
%N= Commit Notes(コミットに付けられた注釈)
コミットメッセージは通常、1行目に簡潔な概要(件名)、2行目以降に詳細な説明(本文)を書く慣習があります。
【装飾に関する情報】
-
%d= Ref Names(ブランチ名やタグ名) -
%D= Ref Names without wrapping(カッコなしのブランチ名やタグ名) -
%C(色名)= 色の指定(red, green, blue, yellowなど) -
%Creset= 色のリセット
【特殊文字】
-
%n= 改行 -
%x00= NULLバイト(スクリプトでの処理用) -
%%= %文字そのもの
改行(%n)は、複数行にわたるフォーマットを作成する際に使用します。
【フォーマット指定子一覧表】
| 分類 | 指定子 | 説明 | 出力例 |
|---|---|---|---|
| コミット | %H |
コミットハッシュ(完全版) | a3f8c2b1d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 |
%h |
コミットハッシュ(短縮版) | a3f8c2b |
|
%T |
ツリーハッシュ(完全版) | b4e9d1c2f3a4b5c6d7e8f9g0h1i2j3k4l5m6n7 |
|
%t |
ツリーハッシュ(短縮版) | b4e9d1c |
|
%P |
親コミットハッシュ(完全版) | c5f0e2d3g4h5i6j7k8l9m0n1o2p3q4r5s6t7u8 |
|
%p |
親コミットハッシュ(短縮版) | c5f0e2d |
|
| 作成者 | %an |
作成者名 | Taro Yamada |
%ae |
作成者メールアドレス | taro@example.com |
|
%ad |
作成日時 | Sat Jan 25 14:30:22 2026 +0900 |
|
%ar |
作成日時(相対表記) | 2 days ago |
|
%at |
作成日時(Unix時間) | 1737785422 |
|
%ai |
作成日時(ISO 8601形式) | 2026-01-25 14:30:22 +0900 |
|
| コミッター | %cn |
コミッター名 | Taro Yamada |
%ce |
コミッターメールアドレス | taro@example.com |
|
%cd |
コミット日時 | Sat Jan 25 14:30:22 2026 +0900 |
|
%cr |
コミット日時(相対表記) | 2 days ago |
|
%ct |
コミット日時(Unix時間) | 1737785422 |
|
%ci |
コミット日時(ISO 8601形式) | 2026-01-25 14:30:22 +0900 |
|
| メッセージ | %s |
件名(1行目) | Add user login feature |
%b |
本文(2行目以降) | Implemented authentication |
|
%B |
完全なメッセージ | Add user login feature\n\nImplemented... |
|
%N |
コミット注釈 | Reviewed by: Hanako |
|
| 装飾 | %d |
ブランチ名/タグ名 | (HEAD -> main, origin/main) |
%D |
ブランチ名/タグ名(カッコなし) | HEAD -> main, origin/main |
|
%C(色名) |
色の指定 | (色付き表示) | |
%Creset |
色のリセット | (通常色に戻す) | |
| 特殊文字 | %n |
改行 | (改行) |
%% |
%文字そのもの | % |
実践的な使用例
フォーマット指定子とオプションを組み合わせることで、様々な形式でコミット履歴を表示できます。
【シンプルな一覧表示】
コミットハッシュと件名のみを表示します。
git log --format='%h %s'
実行結果の例は以下です。
a3f8c2b Add user login feature
b4e9d1a Fix navigation bug
c5f0e2b Update documentation
【作成者情報付きの表示】
作成者名とメールアドレス、件名を表示します。
git log --format='%an <%ae> - %s'
実行結果の例は以下です。
Taro Yamada <taro@example.com> - Add user login feature
Hanako Sato <hanako@example.com> - Fix navigation bug
Taro Yamada <taro@example.com> - Update documentation
【日時付きの詳細表示】
コミット日時、作成者、件名を複数行で表示します。
git log --format='%ai %an%n%s%n'
実行結果の例は以下です。
2026-01-25 14:30:22 +0900 Taro Yamada
Add user login feature
2026-01-24 10:15:33 +0900 Hanako Sato
Fix navigation bug
【相対的な日時での表示】
「2 days ago」のような相対的な時間表記で表示します。直感的に理解しやすいため、最近の変更を確認するときに便利です。
git log --format='%h %ar %s'
実行結果の例は以下です。
a3f8c2b 2 days ago Add user login feature
b4e9d1a 3 days ago Fix navigation bug
c5f0e2b 1 week ago Update documentation
【色付きの表示】
コミットハッシュを黄色、作成者を青色、件名を通常色で表示します。
git log --format='%C(yellow)%h%Creset %C(blue)%an%Creset %s'
ターミナル上で視覚的に区別しやすくなります。
【完全なコミット情報の表示】
作成者情報、コミットメッセージ全体を含む詳細な情報を表示します。
git log --format='Author: %an %ae%nDate: %ai%nSubject: %s%nBody:%n%b%n'
実行結果の例は以下です。
Author: Taro Yamada taro@example.com
Date: 2026-01-25 14:30:22 +0900
Subject: Add user login feature
Body:
Implemented authentication and session management
Added JWT token validation
応用テクニック
【エイリアスの設定】
よく使うフォーマットは、Gitのエイリアス(ショートカット)として登録しておくと便利です。
git config --global alias.ls "log --format='%h %ar %an - %s'"
この設定後、git lsと入力するだけで、カスタマイズした形式でログが表示されます。
【複数オプションの組み合わせ】
オプションは複数組み合わせて使用できます。例えば、グラフ表示と件数制限を同時に指定できます。
git log --oneline --graph -10
このコマンドは、最新10件のコミットをグラフ形式で1行ずつ表示します。
【特定期間の特定作成者の履歴】
期間と作成者を組み合わせて絞り込むこともできます。
git log --author="Taro" --since="1 month ago" --format='%h %ad %s'
過去1ヶ月間の特定メンバーの作業内容を確認できます。
【スクリプトでの活用】
スクリプト内で最新のコミット情報を取得する場合、必要な情報だけを抽出できます。
# 最新のコミットハッシュと件名を取得
latest_commit=$(git log -1 --format='%h: %s')
echo "Latest commit: $latest_commit"
CI/CD(自動ビルドやデプロイの仕組み)パイプラインでコミット情報をログに記録する際などに活用できます。
【ファイル別の履歴確認】
特定のファイルに対する変更履歴を、カスタムフォーマットで確認できます。
git log --format='%h %ad %an - %s' -- src/App.js
ファイルの変更がいつ、誰によって、どのような目的で行われたかを追跡できます。
まとめ
git logコマンドの各種オプションとフォーマット指定子を活用することで、プロジェクトの履歴を効率的に確認できます。状況に応じて適切なオプションを選択し、必要な情報を素早く取得できるようになります。