以下git命令有什么区别?
git diff HEADgit diff HEAD^git diff --cached 或同义词 git diff --stagedgit diffAmb*_*ber 115
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 HEAD :HEAD和工作目录之间的差异.git diff HEAD^ :HEAD的直接祖先和工作目录之间的差异.git diff --cached或同义词git diff --staged:HEAD和索引之间的差异.git diff :索引和工作目录之间的差异.小智 5
这是记住这些命令的简单方法:
git diff的源假定为工作目录,其目标为索引。--cached标志会将源更改为索引。添加更多参数后,它不一定会更改目标。但是为了方便起见,如果未提供目标,则目标将成为最后的提交。玩得开心,将它们混合在一起以达到自己的喜好:)