Git 中有个方便的命令 git diff 可以方便地查看对已暂存的文件做了哪些修改
一般来说,Git 中文件的状态有2种,已跟踪和未跟踪,已跟踪的文件会记录其未更新,已修改和已暂存这些状态的变化。而未跟踪的文件 Git 就不去管它。对文件作了修改以后,git diff 命令可以查看跟踪文件修改以后和已修改(未暂存)的不同以及和已暂存的不同。查看这两个不同有一点区别。
git diff
查看跟踪文件修改以后和已修改(未暂存)的不同
使用 git add 添加文件后,文件直接变为已暂存状态 ,下次就可以通过 git commit 提交了。但是对文件作了修改以后,这个文件就变成了已修改但是未暂存的状态,git diff 可以查看修改以后的文件和之前已暂存状态的不同
可以看到之前已暂存的基础上添加了新的内容:“我是git新添加的一行”
git diff --cached 或者 git diff --staged
修改以后并变为已暂存,比较新的已暂存和之前已暂存文件的不同
一些细节
上面当然很简单,但是这里主要是指出 git diff 查看已暂存状态之间的差别和 git diff --cached 查看已修改和已暂存的差别表现出来的细节,并通过分析有一个清楚的认识。
文件修改后还是已修改但未暂存的状态时,分别使用两个命令查看
第一行输出的内容很显然,git add 之后是已暂存状态,修改之后比较的是修改后未暂存和已暂存之间的不同,显示为添加了新的一行。
第二个命令查看时,只有已暂存时候的一行内容,这是因为修改的内容还没有存到暂存区域,也就是暂存区域间还没有不同。
使用 git add 将修改存到暂存区域后分别使用两个命令查看
这时候第一个命令的输出为空,这是因为已修改为暂存的文件已经不存在了,也就没有不同了。
修改保存到暂存区域后,git diff --cached 进行已暂存文件之间的比较,于是显示出来了新添加的一行。
因此,单单 git diff 不过是显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异。所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。