これからファイルの更新差分を表示したり、ファイルの更新をキャンセルしたり、過去のファイル内容に復元などの操作をしてみます。
ただしそれらの操作を実行するためには操作対象のコミットを指定しなければいけませんので、まずはコミットの指定方法について説明します。

はじめに HEAD を使う方法を説明します。

HEAD はローカルリポジトリの最新コミットを示す識別子ですが、HEADの後に「~」(チルダ)を追加することで過去のコミットを指定する識別子になります。

HEAD+チルダ形式:
HEAD ・・・ 最新のコミット

HEAD~ ・・・1つ前のコミット

HEAD~~ または HEAD~2 ・・・2つ前のコミット

HEAD~~~ または HEAD~3 ・・・3つ前のコミット

HEAD~n ・・・nつ前のコミット

例えば状態9のコミットにHEAD+チルダ形式の識別子を付けると次のようになります。
ローカルリポジトリの所を見て下さい。


状態 9 (HEAD+チルダ形式)


ワーキングツリー
hoge.txt
ab
piyo.txt
AB


インデックス
hoge.txt
ab
piyo.txt
AB


ローカルリポジトリ「gitlocal」
HEAD
hoge.txt
ab
piyo.txt
AB
"piyo.txtを更新(S9)"
HEAD~
hoge.txt
ab
piyo.txt
A
"hoge.txtを更新(S8)"
HEAD~2
hoge.txt
a
piyo.txt
A
"piyo.txtを追加(S5)"
HEAD~3
hoge.txt
a
"hoge.txtを追加(S4)"

さて、少し前のコミットならチルダを使って指定しても良いのですが、かなり前のコミットだと HEAD から数えていくつ前になるのか分からなくなります。
その場合は git log コマンドで出てくる「リビジョン番号」(ハッシュ値とも言います)を使ってコミットを指定します。

コミットのリビジョン番号の確認方法:

git log
日付やコメント等で対象コミットを見つける
commit の後にある英数字の羅列がリビジョン番号(ハッシュ値)

さてこれで対象となるコミットの指定方法が分かりましたので、試しに演習で git show コマンドを使って過去のコミットで何をしたのか確かめてみましょう。
git show コマンドの構文は次の通りです。

指定したコミットの情報取得:
git show <コミット>