1.首先看一下diff
举一个例子,比较文件t.txt和tc.txt这两个文件的差异性
diff也是GNU/LINUX生态系统中的一个重要的工具,众所周知的是,linux的很多很多工具都是可以协作使用的。比如Git中就借助了diff这个文件差异性工具
2.关于git diff:比较本地文件和暂存区(staging area, index area)文件的差异
这是我的一个git仓库以及仓库的状态:没有要提交到暂存区和工作树上的内容
下面我修改了f1中的内容
输入命令git status
显示的是f1文件被修改,而且文件的表示变化没有提交到暂存区
输入命令git diff
暂存区的文件是没有最后一行的,本地的文件f1新增了一行
git diff的作用就是比较本地文件和暂存区文件,如果有差异,则显示
输入命令git diff --cached
什么都没有。因为git diff --cached的作用是比较暂存区的文件和工作树上的文件的差异。
输入git add f1将文件f1提交到暂存区
再次输入git diff
发现没有什么变化,因为我刚刚把f1从本地仓库提交到暂存区,而git diff的作用就是比较本地和暂存区文件的差异
输入git diff --cached
注意git diff --cached的就是显示暂存区文件和工作树文件的差异
使用git commit -m "This is my commit to learn diff"将暂存区的文件提交到工作树
可以预见的是输入git diff --cached之后没有任何显示
3.总结
想象一下有三个区域:本地仓库、暂存区、工作树,在这上面都有一个相同的文件f
git diff 显示本地仓库的文件和暂存区的文件的差异
git diff --cached 显示暂存区文件和工作树文件的差异
没有修改文件f之前,输入git diff 或者git diff --cached当然不会有任何显示
如果在本地对文件做了修改但是没有提交到暂存区,那么git diff 显示的就是暂存区的f和本地f的差异
使用git add f将文件f提交到暂存区之后,本地文件f和暂存区文件f就没有差异了,但是这是暂存区文件f就和工作树文件f就有差异了
使用git commit -m "Input commit message"将暂存区文件f提交到工作树之后,三个区域的文件f就是相同的文件,此时使用命令git diff 和git diff --cached将不会有任何的显示
4.关于Linux
GNU/LINUX操作系统是一个Unix-like操作系统,它继承了unix系统的设计理念,也就是操作系统中的所有软件都可以而且有必要协作完成一个任务,Linux中生态体系中的很多工具如
GCC, Git, Make, GDB, Vim, diff等等都是程序员必须掌握的工具。
标签:文件,Git,--,暂存区,cached,git,diff From: https://www.cnblogs.com/NoteBlogSgj/p/17386439.html