Stage 3・上級編 ー Lesson 3-3

git log と git show を使いこなす — 履歴を深掘り

log の各種オプションと show でコミットの中身を細かく調べる

💡 たとえるなら

図書館で本を引くだけでなく、目次・章立て・ページ単位まで調べる感覚

Stage 1-5 で git log の基本は学びました。実際の現場では「あのバグはいつ入った?」「このファイルは誰が最後に触った?」を調べる場面が多く、log には便利なオプションが山ほどあります。このレッスンでまとめて押さえましょう。

git log のよく使うオプション

# コンパクト表示(最頻出)
$ git log --oneline
# 最新 2 コミットだけ
$ git log -2
# 各コミットの差分も全部表示(patch)
$ git log -p
# 統計(変更ファイル数・行数)
$ git log --stat
# ブランチ構造を木で表示
$ git log --oneline --graph --all
# 特定ファイルの履歴だけ(リネームも追う)
$ git log --follow memo.txt

--follow は地味だけど超便利。ファイルが過去に名前変更されていても、そこを越えて履歴を辿ってくれます。

検索系(バグ調査の友)

# コミットメッセージで検索
$ git log --grep="ログイン"
# ファイル中身に "checkPassword" が入った/消えたコミットを探す
$ git log -S"checkPassword"
# 作者で絞る
$ git log --author="Tanaka"
# 日付で絞る
$ git log --since="2026-04-01" --until="2026-04-30"

-S の検索は 「特定の文字列が現れた/消えたコミット」 を探してくれる、いわゆる pickaxe。「この関数いつから消えたの?」のような調査で重宝します。

git show:1コミットの中身を詳しく見る

log が一覧表示だとすれば、show1コミットの詳細表示

# 直前のコミットの差分を見る
$ git show
# 特定のコミットID
$ git show a1b2c3d
# そのコミット時点の特定ファイルの中身を見る
$ git show a1b2c3d:memo.txt
# タグの詳細
$ git show v1.0.0

特に git show <commit>:<file> は強烈で、「過去のあのバージョンの中身を、ブランチ切替なしでチラ見できる」 便利技。

git blame:行ごとの「誰がいつ変えた?」

「このコードが何でこうなってるのか分からない、誰が書いたか調べたい」とき。

$ git blame memo.txt
a1b2c3d (Taro Tanaka 2026-04-01) はじめてのメモ
e4f5g6h (Hanako Suzuki 2026-04-15) 内容を修正
i7j8k9l (Taro Tanaka 2026-04-20) タイトル追加

各行の 左側にコミットID・作者・日付 が並びます。「ここの設計、書いた人に聞こう」という出発点になります。

status -s(短縮版ステータス)

git status は親切すぎて画面が埋まることも。コンパクト版がこれ。

$ git status -s
M memo.txt   ← 編集ありだが add してない
M index.html  ← add 済み
?? new.txt    ← まだ追跡してない
MM config.yml  ← add 済み + さらに編集あり

2文字で 「ステージ状態 + 作業フォルダ状態」 を表します。慣れるとこちらの方が速い。

ログを「自分用フォーマット」で表示

$ git log --pretty=format:"%h %ad | %s [%an]" --date=short
i7j8k9l 2026-04-20 | タイトル追加 [Taro Tanaka]
e4f5g6h 2026-04-15 | 内容を修正 [Hanako Suzuki]

長くて打ちづらいので、Stage 3-7(config)で alias 化 すると一発で呼べるようになります。

コマンド早見表

用途コマンド
コンパクト一覧git log --oneline
差分も全部git log -p
統計だけgit log --stat
木構造git log --oneline --graph --all
ファイル限定(リネーム追跡)git log --follow <file>
メッセージ検索git log --grep="..."
文字列の出現/消失検索git log -S"..."
1コミットの詳細git show <commit>
過去版の中身チラ見git show <commit>:<file>
行ごとの作者・日付git blame <file>
短縮ステータスgit status -s

やってみよう:自分のリポジトリを掘り起こす

my_project の履歴を、いろんな切り口で覗いてみましょう。

# ① 全体をコンパクトに眺める
$ git log --oneline
# ② ブランチ構造込みで木表示
$ git log --oneline --graph --all
# ③ memo.txt の歴史だけ追う(リネーム越しでも)
$ git log --follow memo.txt
# ④ 「メモ」という単語が含まれるコミットを検索
$ git log --grep="メモ"
# ⑤ memo.txt が変わった全コミットの差分を見る
$ git log -p memo.txt
(q で抜ける)
# ⑥ memo.txt の各行が「誰のどのコミットで書かれた」か見る
$ git blame memo.txt
# ⑦ 最初のコミット時点の memo.txt の中身をチラ見
$ git log --oneline | tail -1
a1b2c3d 最初のメモを追加
$ git show a1b2c3d:memo.txt
はじめてのメモです

git show <commit>:<file>ブランチ切替なしで過去のファイルを見られる 感じが伝われば◎。バグ調査でめちゃくちゃ役立ちます。

このレッスンのまとめ

できるようになったこと
log の各種オプションを使い分けられる
--follow でリネーム越しの履歴も追える
log -S--grep で過去のコミットを検索できる
show で1コミットや特定ファイルの過去版を見られる
blame で「誰がいつ書いた」が行単位でわかる

✏️ 理解度チェック

0 / 3 正解

各問題、選んだ瞬間に正解と解説が表示されます。気軽に試してください。

  1. Q1. ファイルの各行が誰によって、どのコミットで書かれたかを調べるコマンドは?
  2. Q2. 特定のコミットIDの内容(変更差分込み)を見るコマンドは?
  3. Q3. ファイル名がリネームされていても履歴を追いかけるオプションは?

© 2026 git-ready-easy — プログラミング未経験でもわかる git 入門