Git/GitHub

commit とログの読み方

7

commit とログの読み方 — Git Tips

git commit はステージした内容を履歴に固定します。メッセージの残し方で、あとから git log を読むときや追いやすさが変わります。

参考: git-commit · git-log · Commit History · commit --amend


目次

  1. コミットとは何を記録するものか
  2. 良いコミットメッセージの書き方
  3. git log でログを読む
  4. ログを見やすく表示する
  5. amend で直前のコミットを直す(注意点)
  6. うまくいかないとき

コミットとは何を記録するものか

1 回の commit には、次の情報がまとめて記録されます。

記録される内容 説明
ステージした内容のスナップショット git add した時点のファイル内容全体
親コミットへの参照 直前の commit(1 つ前の履歴)への繋がり
作者情報 user.name / user.email
日時 commit した瞬間のタイムスタンプ
メッセージ -m で渡した説明文
ハッシュ(コミット ID) これらすべてから計算される一意な識別子

commit は「差分だけ」を覚えているわけではなく、その時点の全体のスナップショットを指す点が特徴です。実際には内部で効率的に共有・圧縮されていますが、利用者から見た挙動としては「その瞬間の状態を丸ごと記録した」と捉えて問題ありません。

git add README.mdgit commit -m "Add README"

期待する出力(例)

[main a1b2c3d] Add README 1 file changed, 1 insertion(+)

a1b2c3d の部分がコミットハッシュの短縮表記です。この値は commit の内容(親・作者・日時・メッセージなど)から一意に決まるため、同じ内容の commit は必ず同じハッシュになります。


良いコミットメッセージの書き方

コミットメッセージは、あとから履歴を読む人(未来の自分を含む)への説明です。「何を」変更したかと、可能であれば**「なぜ」変更したか**が短く分かると、git log を読み返すときの手間が大きく減ります。

評価
fix 何を直したか分からない
README を更新 一応分かるが、何が変わったか不明
README にセットアップ手順を追加 「何を」が明確
README にセットアップ手順を追加(初回起動で迷う質問が多かったため) 「何を」+「なぜ」まで分かる

短いプロジェクトや練習用リポジトリでは、1 行で「何を」を明確にするだけでも十分効果があります。複数行にしたい場合は、次のように 1 行目を要約、空行を空けて詳細を書く形が広く使われています。

git commit -m "ログイン画面のバリデーションを追加" -m "空メール・不正な形式の入力を送信前に止めるため"

-m を複数回指定すると、それぞれが別の段落として記録されます。エディタを開いて複数行のメッセージを書きたい場合は -m を省略します。

git commit

このコマンドはデフォルトのエディタ(core.editor の設定、既定では多くの環境で vinano)を開きます。使い慣れたエディタに変更したい場合は次のように設定できます。

git config --global core.editor "code --wait"

git log でログを読む

commit の履歴を確認する基本コマンドです。

git log

期待する出力(例)

commit a1b2c3d4e5f6...Author: あなたの表示名 <you@example.com>Date:   Wed Jul 15 06:48:00 2026 +0900    Add READMEcommit 9f8e7d6c5b4a...Author: あなたの表示名 <you@example.com>Date:   Wed Jul 15 06:40:00 2026 +0900    Initial commit

新しい commit が上に、古い commit が下に表示されます。表示を終えるには q を押します(ページャーが起動している場合)。

特定の 1 件だけ詳細を見たい場合は git show も使えます。

git show a1b2c3d

こちらは commit のメッセージに加えて、その commit で実際に変わった差分(git diff と同じような表示)も確認できます。


ログを見やすく表示する

デフォルトの git log は情報量が多く縦に長くなるため、ざっと見渡したいときは --oneline を付けます。

git log --oneline

期待する出力(例)

a1b2c3d Add README9f8e7d6 Initial commit

ブランチの分岐・合流の様子まで見たい場合は --graph を組み合わせます。

git log --oneline --graph --all
* a1b2c3d (HEAD -> main) Add README* 9f8e7d6 Initial commit
オプション 効果
--oneline 1 commit を 1 行に短縮表示
--graph ブランチの分岐・合流を線で表示
--all すべてのブランチを対象にする(省略時は今のブランチのみ)
-n <数> 直近 n 件だけ表示(例: git log -n 5

よく使う組み合わせであれば、Git の alias 機能で短い名前を付けておくと毎回タイプする手間が減ります。

git config --global alias.lg "log --oneline --graph --all"git lg

amend で直前のコミットを直す(注意点)

commit した直後に「メッセージを間違えた」「1 つファイルを追加し忘れた」といったときは、--amend直前の commit をやり直すことができます。

git commit --amend -m "正しいメッセージ"

ファイルを追加し忘れていた場合は、先に git add してから amend します。

git add 忘れていたファイルgit commit --amend --no-edit

--no-edit はメッセージを変更せず、内容(ステージされたファイル)だけを追加する場合に使います。

注意点(必ず守ること)

--amend は「直前の commit を別の commit に置き換える」操作です。つまり 元の commit のハッシュは失われ、新しいハッシュの commit に変わります。これは次の場合に問題を起こします。

状況 amend してよいか
commit したがまだ誰にも共有していない(push していない) 問題なし
すでに git push して他の人と共有している 避けるべき(履歴の不整合を招く)

まだ push していないローカルの commit だけを直すという用途に限定して使うのが安全です。共有済みの履歴を修正する必要がある場合は、別の手段(新しい commit で修正内容を追加する、など)を検討してください。


うまくいかないとき

commit したのに git log に出てこない

別のブランチで commit していないか確認してください。git branch --show-current で今のブランチ名を、git log --all --oneline --graph で全ブランチの履歴を確認できます。

git commit を実行したらエディタが開いて操作方法が分からない

-m "メッセージ" を付けずに実行するとエディタが開きます。多くの場合、1 行目にメッセージを入力し、保存して閉じる(vi なら Esc の後 :wq と入力して Enter)ことで commit が完了します。エディタの操作に慣れないうちは、常に -m オプションを使う方が簡単です。

--amend した後に git push で拒否される

! [rejected]        main -> main (non-fast-forward)

これは、すでに push 済みの commit を amend してハッシュが変わったことが原因です。共有済みの commit は amend しないのが基本方針です。誤って amend してしまった場合、状況によって対処が異なるため、安易に --force で push し直す前に、チームや教材の方針を確認してください。強制 push 自体の詳しい手順は、履歴を書き換える操作として別途慎重に扱うべきトピックです。

git log --graph の表示が崩れる(文字がずれる)

ターミナルの幅が狭い、または日本語混じりのメッセージで見た目が揃わないことがあります。表示だけの問題で履歴自体には影響しないため、気になる場合はターミナルの幅を広げるか --oneline だけで確認してください。

コミットメッセージの typo に気づいた

直前の commit であれば amend で直前のコミットを直す を、まだ push していないことを確認してから使ってください。複数コミット前の typo を直す方法(履歴の書き換え)は、より高度な操作が必要になるため、練習用途では気にしすぎず新しい commit で補足する方が安全です。

シェア