45

git-diff 手册页说 git diff 用于

显示工作树和索引或树之间的更改、索引和树之间的更改、两棵树之间的更改或磁盘上两个文件之间的更改。

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

4

2 回答 2

51

是的,但这在一定程度上取决于您对“当前项目状态”的定义。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>s之间的变化。

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

于 2013-08-08T11:35:32.097 回答
4

这很简单:

git diff HEAD

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

于 2019-06-04T11:19:25.973 回答