14.

git log コミット履歴確認完全ガイド — oneline/graph/stat/blame

編集
この記事の要点
  • git log でコミット履歴を新しい順に表示。q で終了
  • --oneline: 1 行サマリ、--graph --all --decorate: ブランチ図、-p: 差分付き、--stat: 変更行数集計
  • フィルタ: --author="Taro" / --since="2 weeks ago" / --grep="fix" / -- path/to/file
  • コミット詳細は git show <hash>、行単位の責任は git blame、HEAD の動きは git reflog
  • GUI: gitk / Sourcetree / Fork / GitHub の Insights / VS Code の GitLens

基本: git log

# 最新からデフォルト形式
git log

# 出力例
# commit a1b2c3d4e5f6...
# Author: Taro Yamada <taro@example.com>
# Date:   Mon Jun 1 10:00:00 2026 +0900
#
#     Add login feature
#
# commit 9z8y7x6w...
# ...

# 件数制限
git log -n 5
git log -5

# q で終了 (less / pager 上で動作)

よく使うフォーマット

# 1 行サマリ
git log --oneline
# a1b2c3d (HEAD -> main) Add login feature
# 9z8y7x6 Refactor auth
# ...

# グラフ表示(ブランチが見える)
git log --oneline --graph --all --decorate
# * a1b2c3d (HEAD -> main, origin/main) Add login
# | * 7654321 (feature/x) WIP
# |/
# * 9z8y7x6 Initial commit

# 統計付き(変更ファイル数・行数)
git log --stat

# 差分付き(パッチ)
git log -p

# 差分 + 統計
git log -p --stat

カスタムフォーマット (--pretty=format)

# 自由なフォーマット
git log --pretty=format:"%h %ad | %s (%an)" --date=short
# a1b2c3d 2026-06-01 | Add login feature (Taro)

# 色付き
git log --pretty=format:"%C(yellow)%h%Creset %C(green)%ad%Creset | %s %C(blue)<%an>%Creset" --date=short --graph

# プレースホルダ
# %H  full hash    %h  short hash
# %an author name  %ae author email
# %ad date         %ar relative date
# %s  subject      %b  body
# %d  ref names    %D  ref names (no parens)

# alias 化
git config --global alias.lg \
    "log --color --graph --pretty=format:'%C(yellow)%h%Creset -%C(red)%d%Creset %s %C(green)(%cr) %C(blue)<%an>%Creset' --abbrev-commit"
git lg

フィルタ機能

用途オプション
著者で絞り込み--author="Taro"
コミッタで絞り込み--committer="..."
メッセージ検索--grep="fix"
差分内容検索-S "function_name"
正規表現で差分検索-G "pattern"
期間--since="2 weeks ago" --until="yesterday"
ファイル/パス限定git log -- src/login.php
マージコミット除外--no-merges
マージのみ--merges
ブランチ間差git log main..feature
# 自分のコミットを今月分
git log --author="$(git config user.name)" --since="this month" --oneline

# 特定ファイルの変更履歴
git log -p -- src/Login.php

# 関数名を含む差分検索
git log -S "validatePassword" --oneline

# main にあって feature には無いコミット
git log main..feature --oneline

# 2 ブランチの対称差
git log main...feature --left-right --oneline

git show: 1 コミットの詳細

# HEAD のコミット
git show

# 特定コミット
git show a1b2c3d
git show HEAD~3       # 3 つ前

# ファイルの内容を見る
git show HEAD:src/Login.php
git show a1b2c3d:README.md > readme-old.md

# 変更ファイル名だけ
git show --stat a1b2c3d
git show --name-only a1b2c3d

git blame: 行ごとの最終変更

# どの行を誰がいつ変更したか
git blame src/Login.php

# 出力
# a1b2c3d (Taro 2026-05-01 10:00:00 +0900   1) <?php
# 9z8y7x6 (Hanako 2026-04-15 14:30:00 +0900 2) class Login
# ...

# 特定行範囲
git blame -L 50,100 src/Login.php
git blame -L "/^function login/,+30" src/Login.php

# email も表示
git blame -e src/Login.php

# 検索の効率化(コピー検知)
git blame -C -C src/Login.php   # ファイル間のコード移動も追跡

git reflog: HEAD の動きを全部追う

reset --hard / rebase / checkout で消えたように見えるコミットも、reflog に残っています(既定 90 日)。

# HEAD の動き
git reflog
# a1b2c3d HEAD@{0}: commit: Add login
# 9z8y7x6 HEAD@{1}: reset --hard: moving to HEAD~1
# 7654321 HEAD@{2}: commit: WIP feature
# ...

# 消したコミットを復活
git reset --hard HEAD@{2}
# または
git checkout 7654321

# ブランチごとの reflog
git reflog show feature/login

# 既定期限を変更
git config --global gc.reflogExpire "180 days"

GUI ツール

ツール特徴
gitkGit 同梱の TK ベース GUI。軽量
git gui同じく同梱。コミット作成中心
SourcetreeAtlassian 製、無料、Windows/Mac
Fork軽快な GUI、有償
GitKrakenクロスプラットフォーム、Pro 機能あり
VS Code + GitLensエディタ統合、行単位の blame inline 表示
JetBrains IDE 統合IntelliJ/PhpStorm の Git ツールウィンドウ
tigターミナル UI(curses)
GitHub Insights → CommitsWeb 上で履歴/グラフ確認

ブランチごとの最新コミットを一覧

# 全ブランチの先頭コミット
git branch -v

# 全リモートブランチ含む
git branch -av

# 最後に活動があった順
for branch in $(git branch -r --no-merged | grep -v HEAD); do
    echo -e "$(git log --pretty=format:'%ci %an' -1 $branch) \t$branch"
done | sort -r | head -20

FAQ

Q: git log のページャを抜けたい
A: q を押す(less の操作)。永久に無効化したいなら git --no-pager logexport GIT_PAGER=cat

Q: マージで巨大ファイルが入って履歴が汚い
A: git log --no-merges でマージコミット除外、git log --first-parent で main の歴史だけ表示。

Q: 削除されたファイルの履歴を見たい
A: git log --all --full-history -- path/to/deleted/file。ファイルがリネーム移動した場合は --follow も付ける。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. 用語一覧
  2. エラー一覧
  3. git本体のインストール(Linux)
  4. Linuxサーバーへのgit導入とクライアントのセットアップ
  5. リモートリポジトリをローカルリポジトリとしてクローンする方法
  6. リモートとローカルのリポジトリを同期(pull)する方法
  7. 設定の確認
  8. gitユーザー名とemailの設定
  9. リモートリポジトリの作成
  10. ローカルリポジトリの作成
  11. 新規ファイル/ディレクトリをインデックスに登録
  12. インデックスの登録状態を確認
  13. ローカルリポジトリの変更をコミット
  14. コミット履歴の確認
  15. クライアントからリモートリポジトリの接続設定、確認、削除
  16. リポジトリへのプッシュ
  17. リモートリポジトリからクライアントへのSSHクローン
  18. リモートとローカルの差分表示
  19. バージョンの確認
  20. プロキシの設定
  21. ローカルをリモートリポジトリの状態に戻す
  22. ブランチの作成, 一覧表示, 切り替え
  23. ブランチのマージと削除
  24. リベース
  25. .gitignoreの書き方
  26. .gitignoreの設定が反映されない場合
  27. 特定のファイルをgitの管理から外す方法
  28. 参照(ORIG_HEAD, HEAD, FETCH_HEAD)
  29. git rm [-r --cached] の取り消し
  30. 一部のディレクトリ/ファイルのみをリポジトリから復元する方法
  31. ローカルとリモートリポジトリの有無を同期
  32. pushの取消し方法
  33. マージツールの起動方法
  34. Gitで「MERGING」の状態

最近更新/作成されたページ