为什么git diff仅与选项--cached一起使用?

时间:2018-11-08 08:57:21

标签: git

如果我执行git diff file.php,则不会得到任何响应。

我总是必须执行git diff --cached file.php

为什么--cached无法自动执行,为什么我必须这样做?

我正在使用git版本2.17.0.windows.1

2 个答案:

答案 0 :(得分:5)

git diff <file>工作目录中的文件与索引中的文件进行比较。

因此,如果您已经(通过git add将文件从工作目录添加到索引,则:

  1. 工作目录索引之间没有区别。
  2. 但是在当前提交(由HEAD指向)和索引之间存在差异,该差异通过--cached选项显示。

答案 1 :(得分:3)

git diff命令的目的是将索引状态与文件系统中存在的文件进行比较。
git diff --cached命令的作用是将索引的状态与您指向的提交进行比较。

如果您对尚未转换的文件file.php进行了更改(使用git add),则应使用git diff来查看更改。
但是,如果您已经对此文件进行过git add,则副本中已放置了一个副本,因此要查看更改,您必须使用git diff --cached命令。