解説
このコミットは何のファイルを変えた?git showの一覧と差分を使い分けよう
名前だけ、追加・変更の状態、行数の概要、実際の差分を順に確認。作業中のファイルを戻さずに、コミットの範囲を読む手順を試す。

コミットを確認するとき、最初から長い差分を読む前に、どのファイルが対象か見たいことがある。git showなら、記録された変更の一覧や概要を表示できるよ。
今回は新しい練習用リポジトリの最新コミットを読む。実際の仕事の設定や秘密情報は使わず、既存の作業場所で履歴を書き換えないようにしよう。
小さな練習用の履歴を作る
Gitが使えることをgit --versionで確認し、新しい空の練習フォルダーへ移動してから、次を実行する。
git -c init.defaultBranch=main init -q
printf 'v1\n' > app.txt
git add app.txt
git -c user.name=Practice -c user.email=practice@example.invalid commit -qm first
printf 'v2\n' > app.txt
printf 'note\n' > note.txt
git add app.txt note.txt
git -c user.name=Practice -c user.email=practice@example.invalid commit -qm second
-cの名前とメールは、今回の練習用コミットだけに渡す架空の値。実際のGitのグローバル設定を変更する例ではないよ。二つ目のコミットでは、app.txtを変更し、note.txtを追加している。
名前と状態だけを見る
git --no-pager show --format= --name-status HEAD
HEADは、ここでは現在の最新コミットを指す。--format=でコミット情報部分を省き、--name-statusでファイル名と変更状態を見る。期待する対象は、変更を表すMのapp.txtと、追加を表すAのnote.txtだよ。
--name-onlyを使うと、状態を付けず名前だけを見られる。何を表示しているか分かるよう、目的に合わせて指定を選ぼう。
行数の概要と中身を順番に読む
git --no-pager show --stat --oneline HEAD
git --no-pager show HEAD -- app.txt
最初は変更量の概要、次はapp.txtに絞った実際の差分。概要の行数だけで変更の重要性や安全性を判断しないようにしよう。
この三つの表示コマンドは、作業中のファイルを過去へ戻す操作ではない。表示を読むことと、checkoutやrestoreなどで内容を変更することは別だよ。
作業中の未コミット変更とは分ける
ここで読んでいるのは、指定したコミットの変更。いま編集してまだ記録していない内容は、同じ一覧へ混ざるわけではない。
git statusで現在の状態を確認し、作業中の差分が目的ならgit diffを使う。過去のコミットを指定しているか、現在の作業を見ているかを先に区別すると追いやすいね。
編集部では一時リポジトリで追加A・変更M、ファイル名だけの表示、指定ファイルの差分を確認し、読む前後で作業状態が変わらないことを照合した。マージコミットや改名の判定など、すべての表示形式を比べた結果ではないよ。
作業中・ステージ・コミットの違いはgit diffの基本、過去の内容だけ読む場合はgit showでファイルの履歴を読むも参考にしよう。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。