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相比有多么不同,以显示未跟踪的文件?
答案 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的答案)