Stage 3・上級編 ー Lesson 3-3
git log と git show を使いこなす — 履歴を深掘り
log の各種オプションと show でコミットの中身を細かく調べる
💡 たとえるなら
図書館で本を引くだけでなく、目次・章立て・ページ単位まで調べる感覚
Stage 1-5 で git log の基本は学びました。実際の現場では「あのバグはいつ入った?」「このファイルは誰が最後に触った?」を調べる場面が多く、log には便利なオプションが山ほどあります。このレッスンでまとめて押さえましょう。
git log のよく使うオプション
--follow は地味だけど超便利。ファイルが過去に名前変更されていても、そこを越えて履歴を辿ってくれます。
検索系(バグ調査の友)
-S の検索は 「特定の文字列が現れた/消えたコミット」 を探してくれる、いわゆる pickaxe。「この関数いつから消えたの?」のような調査で重宝します。
git show:1コミットの中身を詳しく見る
log が一覧表示だとすれば、show は 1コミットの詳細表示。
特に git show <commit>:<file> は強烈で、「過去のあのバージョンの中身を、ブランチ切替なしでチラ見できる」 便利技。
git blame:行ごとの「誰がいつ変えた?」
「このコードが何でこうなってるのか分からない、誰が書いたか調べたい」とき。
各行の 左側にコミットID・作者・日付 が並びます。「ここの設計、書いた人に聞こう」という出発点になります。
status -s(短縮版ステータス)
git status は親切すぎて画面が埋まることも。コンパクト版がこれ。
2文字で 「ステージ状態 + 作業フォルダ状態」 を表します。慣れるとこちらの方が速い。
ログを「自分用フォーマット」で表示
長くて打ちづらいので、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 show <commit>:<file> の ブランチ切替なしで過去のファイルを見られる 感じが伝われば◎。バグ調査でめちゃくちゃ役立ちます。
このレッスンのまとめ
log の各種オプションを使い分けられる--follow でリネーム越しの履歴も追えるlog -S や --grep で過去のコミットを検索できるshow で1コミットや特定ファイルの過去版を見られるblame で「誰がいつ書いた」が行単位でわかる✏️ 理解度チェック
各問題、選んだ瞬間に正解と解説が表示されます。気軽に試してください。
- Q1. ファイルの各行が誰によって、どのコミットで書かれたかを調べるコマンドは?
- Q2. 特定のコミットIDの内容(変更差分込み)を見るコマンドは?
- Q3. ファイル名がリネームされていても履歴を追いかけるオプションは?