この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:4
ページ更新者:T
更新日時:2026-06-11 07:07:02

タイトル: コミット履歴の確認
SEOタイトル: 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 、行単位の責任は git blame、HEAD の動きは git reflog
  • GUI: gitk / Sourcetree / Fork / GitHub の Insights / VS Code の GitLens

基本: git log

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

# 出力例
# commit a1b2c3d4e5f6...
# Author: Taro Yamada 
# 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) 

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 も付ける。