git diff 命令用于显示提交和工作树之间的更改。
🌟 git diff 后面如果不带任何的参数、文件名、提交 id 等,则 👇👇👇
一般情况下(工作区与暂存区中无相同改动的文件)显示的是当前工作区的文件与 Git 仓库中文件的差异。如下图所示:

二般情况下(工作区与暂存区中有相同的文件)除了相同改动的文件显示的是当前工作区与暂存区的差异,其他文件同一般情况处理。如下图所示:

HEAD:最新一次 commit;
HEAD^:上次提交;
HEAD~n:上 n 次提交;
🌟 git diff HEAD 请看下面!
一般情况下(工作区与暂存区中无相同改动的文件)显示的是当前工作区和暂存区的文件与 Git 仓库中文件的差异。

二般情况下(工作区与暂存区中有相同的文件)除了相同改动的文件显示的是当前工作区与Git 仓库的差异,其他文件同一般情况处理。

git diff :若后面只带有一个 commit,则显示的是 HEAD 与 commit 的差异
git diff :若后面带有两个 commit,则显示的是 commit_1 与 commit_2 的差异
git diff :若后面只带有一个 branch,则显示的是当前分支与 branch 分支的差异
git diff :若后面带有两个 branch,则显示的是 branch_1 分支与 branch_2 分支的差异
--staged是--cached的同义词:git diff --cached===git diff --staged
🌟 git diff --cached:若不提供 commit,默认为 git diff --cached HEAD,则显示的是暂存区文件与 Git 仓库中文件的差异。

注意:如果 HEAD 不存在,且没有给 commit ,则会显示所有阶段性更改。
🌟 git diff --stat:用于显示摘要。若命令后不带任何的参数等,则查询的是当前工作区与 Git 仓库的详细更改。
打印展示如下:
$ git diff --stat
a.js | 4 +++-
b.js | 4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)