Git权威指南学习笔记(二)Git暂存区
例如以下图所看到的:
左側为工作区,是我们的工作文件夹。
右側为版本号库,当中:
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 diff
diff --git a/welcome.txt b/welcome.txt
index 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 --cached
diff --git a/welcome.txt b/welcome.txt
index 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 HEAD
diff --git a/welcome.txt b/welcome.txt
index 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暂存区的更多相关文章
- Hadoop权威指南学习笔记二
MapReduce简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.n ...
- git学习笔记 ---工作区和暂存区
Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工 ...
- netty权威指南学习笔记二——netty入门应用
经过了前面的NIO基础知识准备,我们已经对NIO有了较大了解,现在就进入netty的实际应用中来看看吧.重点体会整个过程. 按照权威指南写程序的过程中,发现一些问题:当我们在定义handler继承Ch ...
- IDA Pro 权威指南学习笔记(二) - IDA 数据库文件
生成数据库文件 把要分析的文件用 IDA 打开后,会生成 3 个数据库文件 扩展名分别为 .id0,id1,nam .id0 文件是一个二叉树形式的数据库 .id1 文件包含描述每个程序字节的标记 . ...
- git的学习笔记(二):git远程操作
1.创建ssh key ssh-keygen -t rsa -C "your_email@example.com" 执行命令后会在用户的家目录生成.ssh的隐藏文件夹,文件夹里有公 ...
- 小丁带你走进git的世界二-工作区暂存区分支
小丁带你走进git的世界二-工作区暂存区分支 一.Git基本工作流程 1.初始化一个仓库 git init git clone git仓库分为两种情况: 第一种是在现有项目或目录下导入所有文件到 ...
- HTTP权威指南-学习笔记
目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...
- JavaScript 权威指南-学习笔记(一)
本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...
- Git中的工作区(Working Directory)、暂存区(stage)和历史记录区(history)
今天和git搏斗了一下午,发现了修改的文件一直commit不了.网上查了一下才发现原来git的模型里还有工作区和暂存区的说法. 工作区:在git管理下的正常目录都算是工作区.我们平时的编辑工作都是在工 ...
随机推荐
- NanShan即时通讯论——HTML5的优势与劣势
原文:NanShan即时通讯论--HTML5的优势与劣势 NanShan即时通讯 学习html时才是XHTML 1.0,接着是 HTML4.01,再到HTML5,如今HTML5 開始吸引越来越多的人的 ...
- 将EC2里的实例导出到RAW文件并进行修改
你可能有自己的instance在amazon云环境里面,或者是你想深度修改一下marketplace里面提供的那些系统又估计运行中的instance改动不方便 亚马逊作为云计算领域的大哥大,我不得不说 ...
- Handler.removeMessages的作用,有时候为什么一定要先remove一下呢
removeMessages会将handler对应message queue里的消息清空,如果带了int参数则是对应的消息清空.队列里面没有消息则handler会不工作,但不表示handler会停止. ...
- 基于visual Studio2013解决算法导论之003雇佣问题
题目 雇用问题 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #in ...
- 盘点:#AzureChat - 虚拟机和自动伸缩
感谢大家跟 Corey Sanders 和 Stephen Siciliano 一起参加本次 #AzureChat.我们很高兴能借这次在线讨论的机会,倾听各位社区成员对我们最受欢迎的两个主题的意见 - ...
- 基于visual Studio2013解决C语言竞赛题之0903文件读写
题目
- Java Socket实现HTTP客户端来理解Session和Cookie的区别和联系
HTTP协议本身是无状态的,即使是同一台电脑同一个浏览器打开同一个页面两次,服务器不知道这两次请求是同一个客户端发送过来的,两次请求是完全独立的.例如,第一次请求时已经登录了,第二次再请求服务器会“忘 ...
- android listview滚动到顶部
1.为了实现类似IOS点击状态栏,列表回滚到顶部的功能(要平滑滚动效果),android上点击一个按钮或是图片什么的也可以让listview一次性滚动到顶部(滑动太多页时,一次可能滚不到顶部,使用ha ...
- 基于visual Studio2013解决C语言竞赛题之1024求和
题目 解决代码及点评 /* 已知有N个无规律的正整数,请编程序求出其中的素数并打印出能被5整除的数之积. */ #include <stdio.h> # ...
- 在VC++中使用Tab Control控件
系统环境:Windows 7软件环境:Visual Studio 2008 SP1本次目的:在模态或非模态对话框中使用Tab Control控件,及引申在单/多文档中使用 查阅MSDN文档,对于创建T ...