Git インデックスは、コミットのためにファイルがステージングされる場所です。詳細については、このStackOverflow の回答をご覧ください。コミットのためにファイルをステージングすると、インデックスには最新のステージング情報が反映されます。ファイルを 2 回ステージングすると、Git インデックスが変更され、作業ディレクトリ内のファイルの内容が反映されます。
ただし、いくつかの追加作業を行うと、各ステージのファイルの内容をそのまま表示できます。git ls-files
各ステージの後にを使用してファイルBLOBdiff
のリストを取得し、後でまたは他の差分ツールを使用して比較するために使用できます。
例として、小さなサンプル セッションを次に示します。
$ git init
Initialized empty Git repository in /home/user/tmp/.git/
$ echo "foo" > foo
$ git add foo
$ git ls-files --stage
100644 257cc5642cb1a054f08cc83f2d943e56fd3ebe99 0 foo
$ echo "bar" > foo
$ git add foo
$ git ls-files --stage
100644 5716ca5987cbf97d6bb54920bea6adde242d87e6 0 foo
$ git cat-file blob 257cc56 > foo.257cc56
$ git cat-file blob 5716ca5 > foo.5716ca5
$ diff foo.257cc56 foo.5716ca5
1c1
< foo
---
> bar
しかし、これは大変な作業であり、BLOB ハッシュ値を慎重に計画して保存する必要があります。