次の git コマンドの違いは何ですか?
git diff HEADgit diff HEAD^git diff --cachedまたは同義語git diff --stagedgit diff
git diff HEAD - 最後のコミット以降に何が変更されたかを表示します。git diff HEAD^-最新のコミットの前のコミット以降に何が変更されたかを示します。git diff --cached- インデックスに追加されたgit addがまだコミットされていないものを表示します。git diff- 変更されたが、まだインデックスに追加されていないものを表示しgit addます。次のようになります。
Working
Directory <----+--------+------+
| | | |
| | | |
V | | |
"git add" | | |
| diff | |
| | | |
V | | |
Index <----+ diff HEAD |
| | | |
| | | |
V | | |
"git commit" | | |
| diff --cached | |
| diff --staged | |
V | | |
HEAD <----+--------+ |
| |
| diff HEAD^
V |
previous "git commit" |
| |
| |
V |
HEAD^ <--------------------+
git diff
次のコミットのためにまだステージングされていない作業ディレクトリの変更が表示されます。
git diff --cached
インデックスと最後のコミットの違いが表示されます。「-a」オプションなしで「gitcommit」を実行した場合にコミットする内容。
git diff HEAD
最後のコミット以降の作業ディレクトリの変更を表示します。「gitcommit-a」を実行した場合にコミットする内容。
git diff HEAD: HEAD と作業ディレクトリの違い。git diff HEAD^: HEAD の直接の祖先と作業ディレクトリの違い。git diff --cachedまたは同義語git diff --staged: HEAD とインデックスの違い。git diff: インデックスと作業ディレクトリの違い。HEADはツリー内の現在のHEADポインタ、HEAD^は前のコミットHEADです。--cachedよくわかりません。--cached行ったがインデックスに追加していない変更が表示されます。
kernal.orgのgit チュートリアルは非常に参考になります。