Git入門:バージョン管理のきほん
履歴を読む(git log)
この回でやること
git log で過去のコミットを読み解く方法を学びます。1行表示やグラフ表示、絞り込み、変更行の追跡まで、履歴を調べるときの定番の使い方を身につけましょう。
- 読む 約 6 分
いつ壊れたのかは、ファイルを見ても分からない
半年前に書いた不自然なコードを見つけたとします。消していいのか、消すと何かが壊れるのか、ファイルを眺めても答えは出ません。書いた本人の意図は、コードには書かれていないからです。
積み上げたコミットは、そのための資料です。読み出すのが git log です。
ターミナル
$ git log
commit 9f1c0a4c6b3b2a1e5d8f7c6b5a4938271605f4e3
Author: Hanako Sato <hanako@example.com>
Date: Mon Jul 6 14:22:10 2026 +0900
ログイン画面のバリデーションを追加並び順は新しいものが上、古いものが下です。1 件につき、コミットを一意に指す 40 桁の名前、書いた人、日時、そしてメッセージが並びます。Author に出るのは、最初に設定した user.name と user.email の値です。
git log は読むだけのコマンドで、履歴を書き換えません。何度打っても安全です。画面が止まったように見えたら表示用のプログラムが動いているので、q で抜けます。
1 行ずつに縮めて、全体を眺める
コミットが 20 件を超えると、この形はかえって読みにくくなります。日常で使うのはこちらです。
ターミナル
$ git log --oneline -10
9f1c0a4 ログイン画面のバリデーションを追加
3b7d21e トップページの見出しを修正
c8e4f60 README に開発環境の手順を追加
1a2b3c4 最初のコミット1 コミット 1 行になり、名前も先頭 7 桁に縮みます。この 7 桁はそのままコマンドに渡せるので、40 桁を打つ必要はありません。-10 は表示する件数です。
ここで気づくことがあります。読めるかどうかは、過去の自分が書いたメッセージの質でほぼ決まります。修正 対応 が並んでいたら、結局どれも開いて確かめるしかありません。
あるファイルの履歴だけを見たいときは、名前の前にハイフン 2 つを置きます。
ターミナル
$ git log --oneline -- src/login.js
9f1c0a4 ログイン画面のバリデーションを追加このハイフン 2 つは、あとに続くのがファイル名であってブランチ名ではない、と Git に伝える印です。省くと、取り違えの恐れがあるときに怒られます。エラーの文面には書き直し方まで出ているので、まず読んでください。
目星が付いたら、そのコミットだけ開く
git log は見出しを並べるだけで、中身の差分は出しません。1 件を詳しく見るには git show に名前を渡します。
ターミナル
$ git show 9f1c0a4
commit 9f1c0a4c6b3b2a1e5d8f7c6b5a4938271605f4e3
Author: Hanako Sato <hanako@example.com>
Date: Mon Jul 6 14:22:10 2026 +0900
ログイン画面のバリデーションを追加
diff --git a/src/login.js b/src/login.js
@@ -3,6 +3,9 @@ function login(email, password) {
+ if (!email.includes("@")) {
+ return { ok: false, message: "メールアドレスの形式が正しくありません" };
+ }
return request("/api/login", { email, password });
}+ と - の読み方は git diff と同じです。メッセージと差分が並ぶので、何を変えたのかと、なぜ変えたのかを一度に読めます。
出てこないコミットを見て「消えた」と早合点しないでください。
git logは今いる場所からたどれる範囲を並べているだけで、たどれないだけのことが大半です。
git logは読むだけの安全なコマンド。新しい順に並ぶ- 日常は
git log --oneline -10。7 桁の名前はそのままコマンドに渡せる - 1 件の中身は
git show <名前>。ファイルで絞るときは-- ファイル名