git HEAD和当前项目状态之间的区别?

时间:2010-07-20 19:28:36

标签: git

我引用一个git教程:

git diff shows the diff between HEAD and the current project state

我想知道这意味着什么。 HEAD不是当前活跃的项目吗?

由于

2 个答案:

答案 0 :(得分:107)

来自“Specifying revisions

  

HEAD命名您在工作树中基于更改的提交。

还有其他元组(FETCH_HEADORIG_HEADMERGE_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

http://images.abizern.org.s3.amazonaws.com/365git/Feb11/Git%20Diff%202.png

答案 1 :(得分:2)

git diff用于显示未提交的更改(即您已完成但尚未提交到当前项目的工作)。

以下是完整的解释: http://git-scm.com/docs/git-diff