git暂存区

摘要:
版本库是提交更改的地方。欢迎txt使用gitdiff查看工作区和版本库之间的差异。执行gitstatus-s以查看当前状态(此处使用状态别名。在之前的Git初始体验中,提到了如何配置别名)。现在我们必须再次执行gitaddwelcome.txt来执行gitstatus-s以查看当前状态。通过比较执行gitadd之前和之后的状态,我们可以发现两个差异。

  在使用git开发时,有三个概念需要知道,工作区,暂存区和版本库。工作区就是直接进行操作的地方,版本库是要将修改提交的地方,那么暂存区是干什么的呢?下面将对暂存区深入研究

  一.修改后能直接提交吗?

  在工作区修改后能直接执行git commit提交吗?让我们一起试试。

  首先修改welcome.txt文件

  echo "welcome">>welcome.txt

  使用git diff查看工作区和版本库的差异。

  git暂存区第1张

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

  git暂存区第2张

  提交失败,提示没有要提交的东西。

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

  git暂存区第3张

  现在只有再执行git add welcome.txt

  再次执行执行git status -s查看当前状态

  git暂存区第4张

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

  现在继续提交

  git暂存区第5张

  二.理解暂存区

  在版本库,.git目录下有一个index文件,下面我们来测试一下这个index文件

  1.执行ls --full-time .git/index查看index文件的时间戳为13:23:19

  git暂存区第6张

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

  git暂存区第7张

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

  下面是工作区和版本库中的暂存区的关系

  git暂存区第8张

  上图左侧是工作区,中间是暂存区,右侧是master分支的目录树。

  执行git add . 命令可以将工作区的修改添加到暂存区,执行git checkout <filename>可以暂存区的文件同步到工作区,也就是让工作区和暂存区保持一致。

  执行git rm --cached <filename>命令可以移除暂存区特定文件。

  执行git commit命令可以提交暂存区修改,master分支目录树会做相应更新。

免责声明:文章转载自《git暂存区》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇OpenGL编程逐步深入(四)Shaders使用tkinter设计一个简单的加法计算器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux下叹号!的用法

在定义包含!的字符串变量时,出现了以下提示错误。 注意:在centos系统下错误,在Fedora系统可以正常运行。 修正方法有以下几种: (1)将整个字符串用单引号引起来。 (2)在!后添加空格。 (3)在!前面加转义符。 (3)用单引号将!引起来。 (4)双引号和转义符配合使用。 接下来,顺带总结了Linux系统下!感叹号的几种常用方式: 1...

golang学习之生成代码文档

go doc 工具会从 Go 程序和包文件中提取顶级声明的首行注释以及每个对象的相关注释,并生成相关文档。 一般用法: go doc package 获取包的文档注释,例如:go doc fmt 会显示使用 godoc 生成的 fmt 包的文档注释。 go doc package/subpackage 获取子包的文档注释,例如:go doc cont...

生成公钥和私钥----OpenSSL和keytool

方法一:使用openssl生成rsa密钥对 密钥长度介于 512 - 65536 之间(JDK 中默认长度是1024),且必须是64 的倍数。密钥的常用文件格式有pem(文本存储)或者der(二进制存储)。 当使用Java API生成RSA密钥对时,公钥以X.509格式编码,私钥以PKCS#8格式编码。 RSA使用pkcs协议定义密钥的存储结构等内容 O...

实现Excel文件的上传和解析

前言 本文思维导图 一、需求描述 实现一个页面上传excel的功能,并对excel中的内容做解析,最后存储在数据库中。 二、代码实现 需求实现思路: 先对上传的文件做校验和解析,这里我们通过ExcelUtil工具类来实现; 解析得到的数据进行批量插入。 2.1 接口定义 @PostMapping(path = "/batchMaintainBa...

whl包构建

安装依赖 pip install whell pip install twine 参数对应 标注*号的为重要参数 描述性参数 —— 提供包信息,供PiPy识别管理 描述性参数,只是作为包的信息用的,没有特殊作用,可有可无。 参数 类型 说明 *name str 包名称 *version str 包版本 *author str 程序的作者...

[阮一峰]Linux 守护进程的启动方法

"守护进程"(daemon)就是一直在后台运行的进程(daemon)。 本文介绍如何将一个 Web 应用,启动为守护进程。 一、问题的由来 Web应用写好后,下一件事就是启动,让它一直在后台运行。 这并不容易。举例来说,下面是一个最简单的Node应用server.js,只有6行。 var http = require('http'); http...