我引用一个git教程:
git diff shows the diff between HEAD and the current project state
我想知道这意味着什么。 HEAD不是当前活跃的项目吗?
由于
答案 0 :(得分:107)
HEAD
命名您在工作树中基于更改的提交。
还有其他元组(FETCH_HEAD
,ORIG_HEAD
和MERGE_HEAD
)。有关详情,请参阅Jefromi's answer。
事情是,默认情况下git diff
实际上显示“项目的当前状态”(即工作树上的文件)和索引(不是HEAD)之间的差异。
换句话说,差异就是你可以告诉git进一步添加到索引但你仍然没有。
如果您执行 git diff --cached
,然后,它会将索引与HEAD进行比较。
请参阅git book for more (archive link):
常见的用法是简单地运行
$ git diff
将显示工作目录中尚未为下次提交暂存的更改。如果要查看下次提交的暂存内容,可以运行
$ git diff --cached
将显示索引与上次提交之间的区别;如果你在没有“-a”选项的情况下运行“git commit”,你会提交什么。 (在Git版本1.6.1及更高版本中,您也可以使用
git diff --staged
,这可能更容易记住。)最后,您可以运行$ git diff HEAD
显示自上次提交以来工作目录中的更改;如果你运行“git commit -a”,你会提交什么。
另见365git: Getting a diff between the working tree and other commits:
答案 1 :(得分:2)
git diff
用于显示未提交的更改(即您已完成但尚未提交到当前项目的工作)。
以下是完整的解释: http://git-scm.com/docs/git-diff