转自:https://juejin.cn/post/6844903654311510030
1.工作区、暂存区、版本库
- 工作区(Working Directory) 是直接编辑的地方,直接操作。
- 暂存区(Stage 或 Index) 数据暂时存放的区域。
- 版本库(commit History) 存放已经提交的数据,push 的时候,就是把这个区的数据 push 到远程git仓库了。
git add
命令会将工作区的修改添加到暂存区
中,git commit
执行时,会提交暂存区
的内容到版本库中。
2.查看对比
git diff 工作区 vs 暂存区 git diff head 工作区 vs 版本库 git diff –-cached 暂存区 vs 版本库
一开始,三个分区是一致的,在工作区修改文件后,另外两个保持一致;在add后,工作区和暂存区一致;commit后,三区一致。
通过git diff命令查看某一文件的修改内容:
myproj % git diff a.txt
diff --git a/a.txt b/a.txt index f658172..fc7bd6a 100644 --- a/a.txt +++ b/a.txt @@ -1,3 +1,3 @@ testA testB -添加注释修改文件 \ No newline at end of file +0820 bg修改一下
输出内容详解:https://developer.aliyun.com/article/658560
- diff --git a/a.txt b/a.txt :
a/a.txt
代表源文件,也就是修改前的文件,b/a.txt
代表比目标文件,也就是修改后的文件; - index f658172..fc7bd6a 100644: 表是文件哈希值。
- 第三四行:---代表源文件,+++代表目标文件;
- 第五行:差异小结,
@@ -1,3 +1,3 @@
,分为两个部分,第一个是-1,3,-表示源文件,1,2表示从第一行开始的第3行,后面的+1,3,则表示目标文件的第一行开始的第三行内容。差异小结可能会有多个。 - 剩下的行都是具体的差异信息,其中以空格开头的行代表源文件与目标文件没有差异,以-开头 的行代表在源文件的基础上删除,以+开头代表在源文件基础上添加;
git add .后,
myproj % git add . myproj % git diff //无内容输出 myproj % git diff head //查看工作区和版本库的区别 diff --git a/a.txt b/a.txt index f658172..fc7bd6a 100644 --- a/a.txt +++ b/a.txt @@ -1,3 +1,3 @@ testA testB -添加注释修改文件 \ No newline at end of file +0820 bg修改一下
myproj % git diff –-cached //查看暂存区和版本库的区别,有问题。 fatal: 有歧义的参数 '–-cached':未知的版本或路径不存在于工作区中。 使用 '--' 来分隔版本和路径,例如: 'git <命令> [<版本>...] -- [<文件>...]'
commit之后第三个命令仍是有问题,不知道为什么。
标签:git,分区,暂存区,源文件,Git,版本,diff,txt,三大 From: https://www.cnblogs.com/BlueBlueSea/p/16608304.html