Stage 1・初心者編 ー Lesson 1-5
過去をのぞいてみよう — git log と git diff
git log でコミット履歴を見て、git diff で具体的な差分を確認する
💡 たとえるなら
セーブ一覧を眺め(log)、2つのセーブの違いを見比べる(diff)
前のレッスンで最初のコミットを作りました。コミットは増えるほど価値が出てくるので、まずはもう少しコミットを増やしてから、履歴の見方を覚えていきましょう。
まず2〜3個コミットを増やす
my_project の中で、memo.txt を編集してコミット、をくり返します。
これで3つのコミットが歴史に積み上がりました。
コミット履歴はタイムライン
HEAD は「いま自分がいる場所」を指す目印です。git commit で新しいコミットを積むとそのコミットに、Stage 2 で学ぶ git switch でブランチを切り替えるとそのブランチの先端に、HEAD が動きます。
git log:歴史の一覧を見る
--oneline オプションで「短縮ID+メッセージ」の1行表示になります。全体の履歴を俯瞰するときに便利です。
オプションなしの git log では、作者・日時・フルIDまで詳しく確認できます。
左の英数字(a1b2c3d)が コミットID です。次の git diff で、このIDを使って「あのコミット」と「このコミット」を比較できます。
--oneline では i7j8k9l のように短く、git log では i7j8k9l1234567890… のように長く表示されますが、どちらも同じコミットです。本来コミットIDは40文字のSHA-1ハッシュで、--oneline は先頭7文字だけを表示しています。普段はこの短い形でも指定できます。なお、7文字は固定ではありません。短縮IDは「リポジトリ内で一意に区別できる最短の長さ」のため、コミット数が増えて先頭が重複すると、Gitが自動的に桁を増やします。
q キーコミット数が多いと
git log はページャー表示に切り替わります。q を押せばターミナルに戻れます。
git diff:何が変わったかを見る
git diff <ID1> <ID2> は 2つのコミットの間の差分 を表示します。コミットIDは git log --oneline で確認したものを使います。
引数なしの git diff は いま編集中のファイル(作業ツリー)と仮置き場(ステージング)の差分 を表示します。まだ git add していない変更を確認したいときに使います。04 レッスンで学んだ「仮置き場」がここでもつながります。
ファイル名を指定すると、そのファイルに絞った引数なし git diff と同じ比較 ができます。変更ファイルが多いときに特定のファイルだけを確認したい場合に便利です。
赤(-)= 削除された行、緑(+)= 追加された行 です。プログラムの世界では、この赤緑表示はずっと付き合うフォーマット。Gitに限らず GitHub のレビュー画面でも同じ見た目です。
コマンド早見表
| コマンド | 何ができる? |
|---|---|
git log | 全コミットの詳細一覧(作者・日時・メッセージ) |
git log --oneline | コミットを1行ずつコンパクトに表示 |
git diff <ID1> <ID2> | 2つのコミットの間の差分を確認 |
git diff | 作業ツリー(編集中)と仮置き場の差分を確認 |
git diff <ファイル名> | 指定したファイルに絞った差分を確認 |
このレッスンのまとめ
git log でコミット履歴を一覧できるgit diff で変更内容を赤・緑で確認できる次のレッスンでは、ここまで作ってきたリポジトリを GitHub に保存 して、クラウドにバックアップする方法を学びます。
✏️ 理解度チェック
各問題、選んだ瞬間に正解と解説が表示されます。気軽に試してください。
- Q1. コミット履歴を一覧表示するコマンドは?
- Q2. git log を1行ずつコンパクトに表示するオプションは?
- Q3. 現在の変更内容(編集中だがまだ add していない差分)を見るコマンドは?