git中关于git diff的理解

git diff命令是用来描述工作区,暂存区,版本区之间的差别。不过git diffgit diff head差别只针对现有文件,不针对新添文件(个人推测,理由在最下方)

git diff --cached命令


用来描述暂存区和版本区的差别
当暂存区和版本库都有一样的文件时,如果我们在暂存区进行添加,修改文件,那么git会给出具体的差别。

修改操作

原来的789.txt文件内容:
git中关于git diff的理解
现在的789.txt文件内容:
git中关于git diff的理解

输入git-diff --cached命令
git中关于git diff的理解

添加操作:

原来的文件数量:
git中关于git diff的理解
添加一个1011.txt文件:
git中关于git diff的理解

输入git diff --cached执行
git中关于git diff的理解

git-diff命令


用来描述工作区和暂存区的差别
当工作区和暂存区的文件一致的时候,我们对工作区的文件进行修改,删除的时候,git会给出具体的差别,但如果新添加一个文件,git不会做出反应。

修改操作:

原来的456.txt文件内容:
git中关于git diff的理解
现在的456.txt文件内容:
git中关于git diff的理解
输入 git diff
git中关于git diff的理解
因为删除操作和修改操作的结果差不多,这里就不演示了,可以自己尝试下

添加操作

原来的文件数量:
git中关于git diff的理解
添加一个1011.txt文件:

git中关于git diff的理解
输入git diff
git中关于git diff的理解
这里没有显示差别,至于为什么没有显示差别,等等在下面会讲讲我的见解

git diff head命令


显示工作区和版本库的差别
当工作区和版本库两者的文件一样的时候,在工作区修改,删除文件,git会给出具体差别,而添加新的文件的花,git不会给出具体差别,即没有反应。

修改操作

原来的1011.txt文件内容:
git中关于git diff的理解

现在的1011.txt文件内容:
git中关于git diff的理解
输入git diff head命令
git中关于git diff的理解
删除操作的效果也是一样,所以这里先不演示了。

添加操作

原来的文件数量:
git中关于git diff的理解添加一个1213.txt文件

git中关于git diff的理解
输入git diff head命令
git中关于git diff的理解
这里git给出的答案都是没有反应的,和添加文件然后输入git diff 一样。

为什么添加文件时git diff headgit diff命令,git都是没反应呢?
下面是我结合下面的文章得出的结论,如果和实际不符,可以留言或私信。

https://blog.csdn.net/u013485584/article/details/53303858#commentBox

我觉得使用git diff进行比较的时候,分两种情况
一:当暂存没有相对应的文件时,那么就去到之前提交到版本库的记录里面寻找有没有
相对应的文件,如果有,则进行比较,如果还是没有,那么就不做比较,即没有反应

二:当暂存有相对应的文件时,就和暂存区里的文件进行比较。

git diff head的话只有一种情况,那就是git diff的第一种情况
当版本库有相对应的文件的时候,进行比较,如果没有,则不做比较,即没有反应。

到这里就结束了,刚入门git,如果有什么地方错误的话,欢迎指正。