Git权威指南学习笔记(二)Git暂存区
来源:互联网 发布:git bash ssh 端口 编辑:程序博客网 时间:2024/05/14 20:37
如下图所示:
左侧为工作区,是我们的工作目录。
右侧为版本库,其中:
index标记的是暂存区(stage),所处目录为.git/index,记录了文件的状态和变更信息。
master标记的是master分支所代表的目录树。HEAD指向master分支。
objects标记的是Git的对象库,所处目录为.git/objects,文件索引建立了文件和对象库中对象实体之间的映射关系。
通过该图我们可以清晰地看出add,commit等命令的转化关系。下面通过git diff和git status两条命令来理清它们之间的关系。
1.假设welcome.txt文件为空,我们首先在该文件中加入一行"1 Hello",并通过git add和git commit提交到版本库中:
$ git add welcome.txt $ git commit -m "1 Hello"
2.在welcome.txt文件中添加第二行"2 Git",只执行git add命令,不执行git commit:
$ git add welcome.txt
执行git status -s命令,输出如下:
可以看到第一列的M是绿色的,表示对于welcome.txt文件,master分支中的文件和暂存区中的文件内容不一致。
第二列的M不存在,表示对于welcome.txt文件,工作区中的文件和暂存区中的文件一致,明显是因为执行了git add操作使得工作区和暂存区中的文件内容同步。
3.在welcome.txt文件中添加第三行"3 Hello Git",不执行git add命令。
输入git status -s,输出如下:
可以看到多了第二列的M,而且是红色的,表示对于welcome.txt文件,工作区中的文件和暂存区中的文件内容不一致。
4.Git diff魔法
(1)暂存区和工作区比较:git diff
$ git diffdiff --git a/welcome.txt b/welcome.txtindex 671036a..d6a88bb 100644--- a/welcome.txt+++ b/welcome.txt@@ -1,2 +1,3 @@ 1 Hello-2 Git\ No newline at end of file+2 Git+3 Hello Git\ No newline at end of file(2)HEAD和暂存区比较:git diff --cached
$ git diff --cacheddiff --git a/welcome.txt b/welcome.txtindex f6abfb2..671036a 100644--- a/welcome.txt+++ b/welcome.txt@@ -1 +1,2 @@-1 Hello\ No newline at end of file+1 Hello+2 Git\ No newline at end of file(3)HEAD和工作区比较:git diff HEAD
$ git diff HEADdiff --git a/welcome.txt b/welcome.txtindex f6abfb2..d6a88bb 100644--- a/welcome.txt+++ b/welcome.txt@@ -1 +1,3 @@-1 Hello\ No newline at end of file+1 Hello+2 Git+3 Hello Git\ No newline at end of file
结合上面的图来看就不难理解了。
最后,给出原书作者的忠告:不要使用git commit -a,原因是这会让我们失去对提交内容进行控制的能力。
- Git权威指南学习笔记(二)Git暂存区
- git暂存区(git权威指南笔记)
- git权威指南总结二:git暂存区详解
- Git权威指南学习笔记(一)Git初始化
- Git学习笔记(三) Git暂存区
- Git学习笔记(三) Git暂存区
- git学习笔记-5 git 暂存区(2)
- Git权威指南(笔记)
- Git学习笔记二--工作区和暂存区
- git对象(git权威指南笔记)
- Git检出(git权威指南笔记)
- git冲突(git权威指南笔记)
- git权威指南 笔记
- git权威指南笔记
- git学习笔记1- git 概念-依据git权威指南
- Git学习-暂存区
- Git的学习笔记(二)——提交流程与暂存区
- git克隆、git库管理(git权威指南笔记)
- CentOS6.2 安装mini版时,没有桌面,全部是命令输入 最开始连不上网的解决方法
- CentOS6.2 命令配置网卡
- background的认识
- C#字典Dictionary排序(顺序、倒序)
- 对比8种NoSQL
- Git权威指南学习笔记(二)Git暂存区
- Tomcat6之access_log经典配置
- 面试总结
- Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)
- uiuiui
- 伪静态的实现
- had oop手动退出安全模式
- 基于局部保持投影(LPP)的人脸特征检测
- js正则表达式