git提交和工作目录之间的区别?

时间:2013-08-08 11:20:34

标签: git-diff

git-diff手册页说git diff用于

  

显示工作树与索引或树之间的更改,更改   索引和树之间,两棵树之间的变化,或变化   在磁盘上的两个文件之间。

但是,如果要显示HEAD之前的提交和工作目录之间的区别呢?这可能吗?

2 个答案:

答案 0 :(得分:35)

是的,但这取决于您对“当前项目状态”的定义。 git diff的手册继续。

如果您有兴趣与分阶段更改进行比较:

git diff [--options] --cached [<commit>] [--] [<path>...]
     

此表单用于查看您为下一次提交相对于指定的<commit>暂存的更改。通常,您希望与最新提交进行比较,因此如果您不提供<commit>,则默认为HEAD。如果HEAD不存在(例如未分支的分支)并且未给出<commit>,则它显示所有分阶段的更改。 --staged--cached的同义词。

如果您有兴趣与未分期更改进行比较:

git diff [--options] <commit> [--] [<path>...]
     

此表单用于查看工作树中相对于命名<commit>的更改。您可以使用HEAD将其与最新提交进行比较,或使用分支名称与其他分支的提示进行比较。

或者如果您只想对任何两次提交感兴趣(一个可能是HEAD):

git diff [--options] <commit> <commit> [--] [<path>...]
     

这是为了查看两个任意<commit>之间的变化。

因此,您可能希望运行git diff someOldCommit HEAD以查看someOldCommit与当前HEAD之间的差异。

答案 1 :(得分:0)

这很简单:

git diff HEAD

说明:与上一次提交相比,工作目录中的当前更改。