git暂存区
在使用git开发时,有三个概念需要知道,工作区,暂存区和版本库。工作区就是直接进行操作的地方,版本库是要将修改提交的地方,那么暂存区是干什么的呢?下面将对暂存区深入研究。
一.修改后能直接提交吗?
在工作区修改后能直接执行git commit提交吗?让我们一起试试。
首先修改welcome.txt文件
echo "welcome">>welcome.txt
使用git diff查看工作区和版本库的差异。

上面显示修改了welcome.txt文件。既然修改了工作区,那就直接提交吧!

提交失败,提示没有要提交的东西。
执行git status -s查看当前状态(这里使用status的别名,在上一篇git初体验中有提怎么配置别名)

现在只有再执行git add welcome.txt
再次执行执行git status -s查看当前状态

我们比较一下在执行git add前后的状态可以发现两点不同。首先第一次M是红色,第二次是绿色,另外第一次M前面有空格,第二次M后面多一个空格。这代表什么含义呢?其实M都是修改了的意思,只不过两次修改代表不同的比较方式。第一次是工作区和版本库进行比较的结果,第二次是暂存区和版本库比较的结果。
现在继续提交

二.理解暂存区
在版本库,.git目录下有一个index文件,下面我们来测试一下这个index文件
1.执行ls --full-time .git/index查看index文件的时间戳为13:23:19

2.执行下面命令修改welcome.txt的时间戳

看见了吧,时间戳改变了,这个实验说明当你操作工作区的某个文件时,它的时间戳就会改变。这样有什么好处呢?其实这样做能够提高git的效率,当比较工作区某个文件是否改变时,会先看它的时间戳有没有改变,如果时间戳没有改变就不用打开文件比较内容了。这样在项目文件内容都很庞大时,效率提高很多。
下面是工作区和版本库中的暂存区的关系

上图左侧是工作区,中间是暂存区,右侧是master分支的目录树。
执行git add . 命令可以将工作区的修改添加到暂存区,执行git checkout <filename>可以暂存区的文件同步到工作区,也就是让工作区和暂存区保持一致。
执行git rm --cached <filename>命令可以移除暂存区特定文件。
执行git commit命令可以提交暂存区修改,master分支目录树会做相应更新。
git暂存区的更多相关文章
- 【原创】关于Git暂存区的理解
关于Git暂存区的理解 暂存区可以说是Git的三大重要的区域之一,另外两个分别是工作目录和Git仓库,所以说对暂存区的深入理解可以帮助我们理解很多Git命令背后隐藏的工作原理.今天,本文将以 ...
- 第二节《Git暂存区》
在上一节中我们的demo版本库经历了一次提交,我们可以使用git og --stat查看一下提交日志. [root@git demo]# git log --statcommit 986a1bd458 ...
- Git学习之Git 暂存区
============================= 修改文件后是否可以直接提交 ============================ (1) 向文件中追加一行内容 $ echo &quo ...
- git 填坑之 git 暂存区忽略文件
今天修改公司项目文件的时候,发现被修改的文件的始终不显示已经被修改. 本来是想要把 KWh 改成 kWh,然后执行 git status 后,没有文件修改记录: 开始分析究竟是因为什么导致的这样诡异的 ...
- idea 编辑器Git暂存区的使用
平时在开发时候 一般线上环境和线下环境区别会很大,所以一下线下的自己测试环境的代码没有如果提交会影响线上环境,所以一般都会使用git的一个暂存区作为临时存放不需要提交的代码,这样每次提交代码都可以在不 ...
- 完整学习git二 git 暂存区
1 git log 命令查看提交日志信息 git log --pretty-fuller #详细查看 git log --stat #查看每次提交的文件变更 git log --pretty-onli ...
- Git 暂存区
可以用 git log 查看提交日志(附加的 --stat 参数可以看到每次提交的文件变更统计). $ cd /path/to/my/workspace/demo $ git log --stat 如 ...
- Git权威指南学习笔记(二)Git暂存区
例如以下图所看到的: 左側为工作区,是我们的工作文件夹. 右側为版本号库,当中: index标记的是暂存区(stage),所处文件夹为.git/index,记录了文件的状态和变更信息. master标 ...
- Git 暂存区的概念
工作区:我们在电脑里面能看到的目录,也就是我们用git init 命令初始化的那个目录.里面包含要添加文件和需要提交的文件,在这个目录下的文件,修改和变更,我们的git都能感知的到. 版本库:工作区有 ...
- git学习(四):理解git暂存区(stage)
与一般的版本管理不同的是,git在提交之前要将更改通过git add 添加到暂存区才能提交(git commit).即使是已经交给了git来管理的文件也是如此.这里继续学习git的暂存区. 通过git ...
随机推荐
- 力扣—Reorder List(重排链表)python实现
题目描述: 中文: 给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点 ...
- Jmeter 将正则表达式提取的参数传给全局(跨线程组使用变量)
一.使用正则表达式提取sessionId 1.在测试计划(跨线程组使用变量)--> 线程组(登录)--> 添加HTTP请求(登录接口) (1)创建测试计划: 勾选独立运行每个线程组(例如在 ...
- jstat详解
jstat 1. jstat -gc pid 可以显示gc的信息,查看gc的次数,及时间. 其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时 ...
- java模式-----单例模式
什么是单例设计模式? 单例模式,是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例.即一个类只有一个对象实例. 类结构 ...
- spring boot 依赖配置
虽然springboot号称是零配置 配置文件确实不需要,但是 依赖还是要有的 <parent> <groupId>org.springframework.boo ...
- 根据mysql数据库 定义solr Schema.xml中配置业务域
<!--product--> <field name="product_name" type="text_ik" indexed=" ...
- epoll学习(二)
首先看程序一,这个程序想要实现的功能是当用户从控制台有任何输入操作时,输出”hello world!”. l 程序一 #include <unistd.h> #include <io ...
- hdu 2089 不要62 (数位dp)
Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer). 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别 ...
- Python基础教程(006)--Python的特点
前言 了解Python背景,明白Python在目前社会中的标准库是有成千上万的Python爱好者共同维护的. 知识点 Python是完全面相对象的语言 函数,模块,数字,字符串都是对象,在Python ...
- 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】02、创建新的SpringBoot项目
1.创建项目 得到项目架构 2.测试项目Web功能 默认端口为8080,运行后,输入localhost:8080/index即可访问到网页 到这里,项目构建成功!