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 ...
随机推荐
- Java缓冲流的优点和原理
不带缓冲的流的工作原理: 它读取到一个字节/字符,就向用户指定的路径写出去,读一个写一个,所以就慢了. 带缓冲的流的工作原理: 读取到一个字节/字符,先不输出,等凑足了缓冲的最大容量后一次性写出去,从 ...
- diff算法(核心)
ps:大致转载知乎文章 vue和react的虚拟dom都采用类似的diff算法,核心大概可以归为两点 1,两个相同的组件产生类似的DOM结构,不同的组件产生不同的DOM结构: 2,同一层级的一组节点, ...
- 每天一个linux命令:touch(9)
touch touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来:二是用来创建新的空文件 格式 touch [选项] [文件] 参数 ...
- RCC初始化学习
一.设置RCC时钟 //#define SYSCLK_HSE #define SYSCLK_FREQ_20MHz //#define SYSCLK_FREQ_36MHz //#define SYSCL ...
- Node.js环境下通过Express创建Web项目
通过Express命令创建项目 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express ...
- commonJs的运行时加载和es6的编译时加载
参考 : https://www.cnblogs.com/jerrypig/p/8145206.html 1.commonJs的运行时加载 2.ES6编译时加载
- 前端每日实战:77# 视频演示如何用纯 CSS 创作旗帜飘扬的动画
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/qydvBm 可交互视频 此视频是可 ...
- (转)将SVN从一台服务器迁移到另一台服务器(Windows Server VisualSVN Server)
转:http://blog.sina.com.cn/s/blog_855a24030102xp9q.html 服务器环境: Windows Server 2012 软件版本: VisualSVN-S ...
- FATFS模块应用笔记
FATFS模块应用笔记 如何港 范围 内存使用 模块尺寸缩小 长文件名 统一的API 重入 复制文件访问 性能有效文件访问 对闪存介质考虑 关键的第 延长使用FATFS API 关于FATFS许可证 ...
- 原生Android项目里嵌入Cordova
Android H5混合开发():原生Android项目里嵌入Cordova 如果安卓项目已经存在了,那么如何使用Cordova做混合开发? 方案1(适用于插件会持续增加或变化的项目): 新建Cord ...