git logの使い方|コミット履歴を自在に検索・表示するオプション集

「あの変更っていつ入ったんだっけ?」「このバグを入れたコミットを特定したい」。チーム開発をしていると、コミット履歴から必要な情報を素早く見つけたい場面がよくありますよね。

git logはGitの標準コマンドですが、オプションを使いこなせば履歴検索の効率が大きく変わります。この記事では基本的な使い方から、日付・作成者・コード変更でのフィルタリング、見やすいカスタム表示まで実践的なテクニックを紹介します。

目次

git logとは

git logはGitリポジトリのコミット履歴を表示するコマンドです。現在のブランチから親コミットをたどり、逆時系列順(新しい順)でコミット情報をリスト表示します。

デフォルトでは各コミットのハッシュ、作成者、日時、コミットメッセージが表示されます。しかしgit logの真価は豊富なオプションにあり、表示形式のカスタマイズや条件によるフィルタリングを組み合わせることで、大量のコミット履歴から必要な情報を効率的に抽出できます。

# 基本的な実行
git log

このコマンドを実行すると、以下のような出力が表示されます。

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0
Author: John Doe <john@example.com>
Date:   Fri Jan 10 10:30:00 2026 +0900

    ユーザー認証機能を追加

基本的な表示オプション

まずは日常的によく使う表示オプションから見ていきましょう。

表示件数を制限する

全履歴を見る必要がない場合は-nオプション(または-数字の省略形)で表示件数を制限できます。

# 最新の5件だけ表示
git log -5

# 同じ意味(-nの省略形)
git log -n 5

1行表示でコンパクトに

--onelineオプションを使うと、各コミットが1行で表示されます。短縮ハッシュとコミットメッセージの1行目だけが出力されるため、履歴の概要を素早く把握するのに便利です。

git log --oneline

出力例は以下のようになります。

a1b2c3d ユーザー認証機能を追加
b2c3d4e ログイン画面のスタイル修正
c3d4e5f READMEを更新

ブランチの分岐をグラフ表示

--graphオプションを追加すると、ブランチの分岐やマージがASCII文字のグラフで視覚化されます。--allと組み合わせれば全ブランチの履歴を確認できます。

# グラフ付きで全ブランチを表示
git log --oneline --graph --all

出力例を見てみましょう。

*   e5f6g7h Merge branch 'feature'
|\
| * d4e5f6g feature: 新機能を実装
| * c3d4e5f feature: テストを追加
|/
* b2c3d4e main: 設定ファイルを更新
* a1b2c3d main: 初期コミット

ブランチ・タグ名を表示

--decorateオプションを使うと、各コミットに紐づくブランチ名やタグ名が表示されます。どのコミットがどのブランチの先頭なのかが一目でわかります。

git log --oneline --decorate

出力は以下のようになります。

a1b2c3d (HEAD -> main, origin/main) 最新のコミット
b2c3d4e (tag: v1.0.0) バージョン1.0.0リリース

ファイル変更の統計情報

--statオプションを追加すると、各コミットでどのファイルが何行変更されたかの統計が表示されます。

git log --stat -3

出力例は以下の通りです。

commit a1b2c3d
Author: John Doe <john@example.com>
Date:   Fri Jan 10 10:30:00 2026 +0900

    ユーザー認証機能を追加

 src/auth.js  | 45 ++++++++++++++++++++++++++++++++++++
 src/login.js | 12 ++++------
 2 files changed, 51 insertions(+), 6 deletions(-)

差分(パッチ)を表示

-p(または--patch)オプションを使うと、各コミットの実際のコード差分が表示されます。どの行が追加・削除されたかを確認したいときに使います。

# 最新3件の差分を表示
git log -p -3

フィルタリングオプション

大量のコミット履歴から必要な情報を探すには、フィルタリングオプションが不可欠です。

日付で絞り込む

--since(または--after)と--until(または--before)で期間を指定できます。日付の書き方は柔軟で、相対的な表現も使えます。

# 過去1週間のコミット
git log --since="1 week ago"

# 過去2週間のコミット
git log --since="2 weeks ago"

# 特定の期間
git log --after="2026-01-01" --before="2026-01-31"

# 昨日以降のコミット
git log --since="yesterday"

作成者で絞り込む

--authorオプションで特定の作成者のコミットだけを表示できます。部分一致で検索され、正規表現も使えます。

# 名前に"John"を含む作成者
git log --author="John"

# 複数の作成者(正規表現)
git log --author="John\|Mary"

# メールアドレスで検索
git log --author="@example.com"

コミットメッセージで検索

--grepオプションでコミットメッセージに特定のテキストを含むコミットを検索できます。チケット番号やキーワードでの検索に便利です。

# "bugfix"を含むコミット
git log --grep="bugfix"

# 大文字小文字を区別しない
git log --grep="BugFix" -i

# 正規表現で検索
git log --grep="ISSUE-[0-9]\+"

コード変更で検索(pickaxe)

-Sオプション(通称pickaxe)は、特定の文字列が追加または削除されたコミットを検索します。「この関数はいつ追加されたのか」「この変数はいつ削除されたのか」を調べるのに非常に強力です。

# "calculateTotal"という文字列が追加/削除されたコミット
git log -S"calculateTotal"

# 差分も一緒に表示
git log -S"calculateTotal" -p

正規表現で検索したい場合は-Gオプションを使います。

# 正規表現でマッチするコード変更
git log -G"API.*endpoint"

特定ファイルの履歴

ファイルパスを指定すると、そのファイルに関するコミットだけが表示されます。パスの前に--を付けるのが慣例です。

# 特定ファイルの変更履歴
git log -- src/auth.js

# 複数ファイル
git log -- src/auth.js src/login.js

# ディレクトリ指定
git log -- src/components/

ファイルがリネームされた場合も追跡したいときは--followオプションを追加します。

# リネーム前の履歴も含めて表示
git log --follow -- src/auth.js

マージコミットの除外

レビュー時などマージコミットを除外したい場合は--no-mergesを使います。

git log --no-merges

ブランチ間の比較

2つのブランチ間でどのコミットが異なるかを調べるには、範囲指定の記法を使います。

差分コミットを表示

..(ドット2つ)を使うと、一方のブランチにあって他方にないコミットを表示できます。

# mainにはなくfeatureブランチにあるコミット
git log main..feature

# リモートと比較(pushしていないコミット)
git log origin/main..HEAD

対称差分を表示

...(ドット3つ)を使うと、どちらか片方にのみ存在するコミット(両方に共通でないコミット)が表示されます。

# mainとfeatureの対称差分
git log main...feature

カスタムフォーマット

--pretty=format:を使うと、出力形式を自由にカスタマイズできます。プレースホルダーを組み合わせて必要な情報だけを表示しましょう。

よく使うプレースホルダーは以下の通りです。

プレースホルダー内容
%H / %hコミットハッシュ(完全/短縮)
%an作成者名
%ae作成者メールアドレス
%ad作成日時
%ar作成日時(相対表示)
%sコミットメッセージ(1行目)
%dブランチ/タグ名
%Cred, %Cgreen, %Creset色指定

実際の使用例を見てみましょう。

# シンプルなカスタム表示
git log --pretty=format:"%h - %an, %ar : %s"

出力は以下のようになります。

a1b2c3d - John Doe, 2 hours ago : ユーザー認証機能を追加
b2c3d4e - Jane Smith, 1 day ago : ログイン画面のスタイル修正

色を付けるとさらに見やすくなります。

# カラー付きフォーマット
git log --pretty=format:"%Cred%h%Creset - %s %Cgreen(%ar) %C(bold blue)<%an>%Creset"

便利なエイリアス設定

よく使うオプションの組み合わせはエイリアスとして登録しておくと便利です。以下は定番のgit lgエイリアスです。

# エイリアスを設定
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

設定後はgit lgで見やすいグラフ表示が使えます。

# 現在のブランチ
git lg

# 全ブランチ
git lg --all

# 最新10件
git lg -10

実践的な使用シーン

ここまで紹介したオプションを組み合わせた実践例を見てみましょう。

今週自分がコミットした内容を確認

git log --author="$(git config user.name)" --since="1 week ago" --oneline

特定の機能に関するコミットを追跡

git log --grep="認証" --oneline --stat

バグの原因コミットを特定

特定のコードがいつ追加されたかを調べる例です。

git log -S"buggyFunction" -p

リリース間の変更一覧

タグ間のコミットを確認する例です。

git log v1.0.0..v1.1.0 --oneline --no-merges

複雑な条件での検索

過去1ヶ月、特定の作成者、マージ以外のコミットを検索する例です。

git log --since="1 month ago" --author="John" --no-merges --oneline --graph

関連コマンド

git log以外にも履歴を調べるのに便利なコマンドがあります。

git shortlogは作成者ごとにコミットを集計します。リリースノートの作成やチームの貢献度を確認するのに便利です。

# 作成者ごとのコミット数
git shortlog -sn

git showは特定のコミットの詳細を表示します。

# 特定コミットの詳細
git show a1b2c3d

git blameはファイルの各行がどのコミットで変更されたかを表示します。

# 各行の最終変更者を表示
git blame src/auth.js

git reflogはHEADの移動履歴を表示します。git resetで消えたコミットを復元するときなどに使います。

# HEADの移動履歴
git reflog

よくある質問

git logの出力が長くて見づらい場合は?

-nオプションで件数を制限するか、--onelineでコンパクトに表示しましょう。ページャーを終了するにはqキーを押します。

特定のコミットの詳細だけを見たい場合は?

git show <コミットハッシュ>を使います。git logは履歴の一覧表示、git showは特定コミットの詳細表示という使い分けです。

リモートブランチの履歴を見るには?

git fetchで最新情報を取得してから、git log origin/mainのようにリモートブランチ名を指定します。

まとめ

git logはオプションを組み合わせることで、プロジェクトの履歴から必要な情報を効率的に抽出できます。まずは--oneline--graphで見やすい表示に慣れ、次に--author--sinceでのフィルタリング、そして-Sオプション(pickaxe)でのコード変更検索を覚えると、デバッグやコードレビューの効率が大きく向上します。

よく使う組み合わせはエイリアスとして登録しておくのがおすすめです。git lgエイリアスを設定するだけでも日常の作業が快適になるでしょう。

参考リンク

Git – git-log Documentation – 公式ドキュメント。全オプションの詳細な説明が記載されています。

Advanced Git Log | Atlassian Git Tutorial – フォーマットとフィルタリングの実践的な使い方を解説。

git-tips/tips – GitHubで21.7kスターの人気リポジトリ。git logを含むGit全般のtipsを収録。

さらに深く学びたい方へ

この記事で紹介した技術をマスターするには、体系的な学習が重要です。独学で挫折しそうな方は、現役
エンジニアから直接学べるプログラミングスクールも検討してみてください。

現場で通用するスキルを身につけるなら

DMM WEBCAMPのカリキュラムは、実際の開発現場を想定したチーム開発も経験できます。ポートフォリオ制作
支援もあり、転職活動で差をつけられます。

未経験から4ヶ月でエンジニアとして活躍できるレベルまで成長可能です。

実務レベルのWeb開発スキルを習得するなら

RUNTEQは、1000時間の圧倒的学習量で、現場で即戦力となるWebエンジニアを育成します。Ruby on
Railsに特化し、実際のWebサービス開発を通じて実践力を養います。

卒業生の多くが自社開発企業への転職に成功している実績があります。

じっくり理解を深めたい方へ

この記事で紹介した内容を確実に身につけるには、分からない点をすぐに質問できる環境が重要です。CodeCa
mpなら、現役エンジニアとのマンツーマンレッスンで、あなたのペースで着実にスキルアップできます。

朝7時〜夜23時まで、365日受講可能なので、仕事や学業と両立しながら学習を進められます。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次