git status在内部的工作方式与git diff有何不同,以显示未跟踪的文件?

时间:2015-03-03 08:29:08

标签: git

Git diff手册页说

  

显示 工作树和索引 或树之间的更改,索引与树之间的更改,两棵树之间的更改,两个blob对象之间的更改,或者磁盘上两个文件之间的更改。

对于与定义的粗体部分相关的未跟踪文件,我很困惑。 这就是我做的事情

touch test.html
git status

' 它显示

blr-mpjfs:workflow_manager amazumde$ git status

On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)


test.html

但当我git diff时,没有任何内容出现在这里 如果我使用git add添加文件,git diff会显示差异

我看了Can I use git diff on untracked files? 还是不确定。

  

所以这是我的问题&#34; git diff显示工作之间的区别   工作中未跟踪 / 创建的文件的树和索引   目录&#34;

修改

  

如果它不应该显示未跟踪文件的差异,那么不是   描述有点不清楚?有没有明显的地方   叫了出来?

第二次修改

  

git status的内部工作方式与git diff相比有多么不同,以显示未跟踪的文件?

3 个答案:

答案 0 :(得分:3)

根据定义,“未跟踪文件”不在索引中。 (这似乎没有被正确记录,但是“跟踪文件”只是在索引中有条目的文件,而“未跟踪文件”则不是。但这包括记录索引条目的特殊情况。删除文件的意图:跟踪此类文件,即使该文件的索引条目显示“不包含此文件”。)

因此,您的问题首先声称路径P不在索引中(即P未跟踪),然后询问git是否可以通过路径{{来比较索引中找到的文件1}}到其他文件。正如您所看到的,很难回答这个问题,因为它提出了两个相互矛盾的说法:索引中P ,同时,P 在索引中。

答案 1 :(得分:1)

不,git diff无法显示工作目录中未跟踪创建文件的工作树和索引之间的区别,SVN也没有。

答案 2 :(得分:0)

您的问题可能与此can-i-use-git-diff-on-untracked-files

重复

正如在这些答案中所提到的,你可以做类似git diff --no-index tracked_file untracked_file的事情(来自@Harold的答案)