git status
,git diff
如果git status
告诉你工作区中有文件被修改过,
用git diff
可以查看修改内容。
注:
1、如果git add <file>
了后再git diff
就看不到文件具体修改了哪里
2、git diff
比较的是**工作区文件(working directory)与暂存区文件(stage/index)的区别(上次git add 的内容) git diff --cached
比较的是暂存区文件(stage/index)与仓库分支(master)**里(上次git commit 后的内容)的区别
请注意,git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。 所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。
3、git diff HEAD -- <file>
可以查看工作区和版本库(repository)里的分支仓库中的文件的区别。
vim <file>
| git add
git commit
git push
修改文件 | 工作区 ----》 本地库的暂存区 -----> 本地库的分支仓库 ----> 远程库
关于Git仓库结构以及 git diff
相关命令的理解
1、Git仓库:
? 工作区(Working Directory)
? 版本库/本地库(Repository):
? 暂存区(stage)
? 分支仓库(master)
2、git diff
相关命令
见顶部
实验例子(以read.txt为例):
vim read.txt
#创建read.txt文件,并输入内容:read firstgit diff
#比较working directory 中和 stage中的区别------》应该是什么也没有,因为此时stage中为空git add read.txt
#把read.txt的修改提交到stage中vim read.txt
#修改read.txt文件内容,修改为:read secondgit diff
#会指出不同,first 、second------》因为此时stage中记录了含first的那个txtgit diff --cached
#比较stage 中和 master中的区别------》应该是什么也没有,因为此时master中为空git commit -m "commit first"
#第一次提交到master------》此时文件关键内容,工作区中:first;暂存区中:second;分支仓库中:secondgit diff --cached
#应该是什么也没有,因为此时stage和master中都是secondvim read.txt
#文件内容修改为:read thirdgit add read.txt
#把read.txt的修改提交到stage中vim read.txt
#文件内容修改为:read first,此时文件关键内容,工作区中:first;暂存区中:second;分支仓库中:thirdgit diff HEAD -- read.txt
#比较working directory中和 master中的区别------》结果会指出,first和third的不同