git中关于git diff的理解
git diff命令是用来描述工作区,暂存区,版本区之间的差别。不过git diff 和git diff head差别只针对现有文件,不针对新添文件(个人推测,理由在最下方)
git diff --cached命令
用来描述暂存区和版本区的差别
当暂存区和版本库都有一样的文件时,如果我们在暂存区进行添加,修改文件,那么git会给出具体的差别。
修改操作
原来的789.txt文件内容:
现在的789.txt文件内容:
输入git-diff --cached命令
添加操作:
原来的文件数量:
添加一个1011.txt文件:
输入git diff --cached执行
git-diff命令
用来描述工作区和暂存区的差别
当工作区和暂存区的文件一致的时候,我们对工作区的文件进行修改,删除的时候,git会给出具体的差别,但如果新添加一个文件,git不会做出反应。
修改操作:
原来的456.txt文件内容:
现在的456.txt文件内容:
输入 git diff
因为删除操作和修改操作的结果差不多,这里就不演示了,可以自己尝试下
添加操作
原来的文件数量:
添加一个1011.txt文件:
输入git diff
这里没有显示差别,至于为什么没有显示差别,等等在下面会讲讲我的见解
git diff head命令
显示工作区和版本库的差别
当工作区和版本库两者的文件一样的时候,在工作区修改,删除文件,git会给出具体差别,而添加新的文件的花,git不会给出具体差别,即没有反应。
修改操作
原来的1011.txt文件内容:
现在的1011.txt文件内容:
输入git diff head命令
删除操作的效果也是一样,所以这里先不演示了。
添加操作
原来的文件数量:
添加一个1213.txt文件
:
输入git diff head命令
这里git给出的答案都是没有反应的,和添加文件然后输入git diff 一样。
为什么添加文件时git diff head和git diff命令,git都是没反应呢?
下面是我结合下面的文章得出的结论,如果和实际不符,可以留言或私信。
https://blog.csdn.net/u013485584/article/details/53303858#commentBox
我觉得使用git diff进行比较的时候,分两种情况
一:当暂存没有相对应的文件时,那么就去到之前提交到版本库的记录里面寻找有没有
相对应的文件,如果有,则进行比较,如果还是没有,那么就不做比较,即没有反应
二:当暂存有相对应的文件时,就和暂存区里的文件进行比较。
而git diff head的话只有一种情况,那就是git diff的第一种情况
当版本库有相对应的文件的时候,进行比较,如果没有,则不做比较,即没有反应。
到这里就结束了,刚入门git,如果有什么地方错误的话,欢迎指正。