git暂缓区的理解

Git 核心概念:工作区与暂缓区(添加提交及查看状态充分体现) 前言 首先,我们要先知道什么是 工作区(Working Directory) 和 暂缓区(Postponed Zone)。 工作区(Working Directory): 顾名思义,工作的地区。我们电脑中每个项目目录就是一个工作区。 暂缓区(Postponed Zone): 暂缓区在哪里?我们工作区中 .git 这个隐藏目录就是我们的暂缓区 Git 和其他版本控制系统(SVN)不同之处就是有暂存... 阅读详情

http://selfcontroller.iteye.com/blog/1786644


可以将git简单的分为三个区域 
   1、工作区(working directry) 
   2、暂缓区(stage index) 
   3、历史记录区(history)    
如图: 


git add files 把当前工作目录中的文件放入暂存区域 
    其实做了两件事: 
    1、将本地文件的时间戳、长度,当前文档对象的id等信息保存到一个树形目录中去(index,即平时说的暂存区) 
    2、将本地文件的内容做快照并保存到Git 的对象库 
    (综上:实际上就是一个包含文件索引的目录树,像是一个虚拟的工作区。在这个虚拟工作区的目录树中,记录了文件名、文件的状态信息(时间戳、文件长度等),文件的 内容并不存储其中,而是保存在 Git 对象库(.git/objects)中,文件索引建立了文件和对象库中对象实体之间的对应。) 
    如图: 


在这个图中,我们可以看到部分 Git 命令是如何影响工作区和暂存区(stage, index)的: 
   图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage, index),标记为 "master" 的是 master 分支所代表的目录树。 
  
   图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个“游标”。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。 

   图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下 

   当对工作区修改(或新增)的文件执行 "git add" 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID 被记录在暂存区的文件索引中 

   当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树 

git reset -- files 用来撤销最后一次git add files(因为每git add file一次,暂存区的文件都会被更改一次),你也可以用git reset 撤销所有暂存区域文件。 

git checkout -- files 把文件从暂存区域复制到工作目录,用来丢弃本地修改。 

当执行 "git rm --cached <file>" 命令时,会直接从暂存区删除文件,工作区则不做出改变 

当执行 "git checkout ." 或者 "git checkout -- <file>" 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动 

当执行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改 动 

当执行 "git status" 命令扫描工作区改动的时候,先依据 .git/index 文件中记录的(工作区跟踪文件的)时间戳、长度等信息判断工作区文件是否改变。如果工作区的文件时间戳改变,说明文件的内容 可能 被改变了,需要要打开文件,读取文件内容,和更改前的原始文件相比较(本地文件和与之对应的object库中的文件的内容进行对比),判断文件内容是否被更改。如果文件内容没有改变,则将该文件新的时间戳记录到 .git/index 文件中。因为判断文件是否更改,使用时间戳、文件长度等信息进行比较要比通过文件内容比较要快的多,所以 Git 这样的实现方式可以让工作区状态扫描更快速的执行,这也是 Git 高效的因素之一。 

git diff files 来进行具体文件的变动对比,通常用来进行work directory 与 stage之间的对比,实质上是用 git objects 库中的快照与work directory 文件的内容的对比 

数据质量管理的一些思考 背景 在近期的项目当中,我们为客户落地实施了数据资产平台。随后,在数据平台中接入了客户子公司的一个业务系统的明细数据。客户希望在我们的数据平台上通过数据探索和数据分析,来挖掘一些业务价值和业务创新点。 当我们拿到数据开始进行一些初步探索的时候,发现导入平台的数据质量存在一定的问题:例如一些用于数据分析的关键字段的值为空、一些本应该有主从关系的数据对应不上、数据分类混乱等。这些问题直接影响到了对... 阅读详情

相关推荐

ADAS系统架构与核心功能解析:从感知到执行的智能驾驶方案

高级驾驶员辅助系统(ADAS)是现代汽车智能化的核心技术,其本质是通过传感器融合、算法决策与车辆控制,构建一个“感知-决策-执行”的闭环系统。在技术原理上,ADAS依赖摄像头、毫米波雷达、激光雷达等多源传感器进行环境感知,并通过深度学习模型与融合算法(如卡尔曼滤波)构建精准的环境模型。其技术价值在于提供主动安全冗余与驾驶舒适性,核心应用场景包括自动紧急制动(AEB)、自适应巡航(ACC)及车道保持辅助(LKA)等。随着传感器成本下降与域控制器算力提升,ADAS正从高端配置向主流车型快速普及,并逐步向高阶导航

weixin_31062533的博客 419

idea中git远程版本回退

工作中遇到git远程仓库需要回退到历史版本的问题,根据网上的搜索结果结合自己的实践,整理了如下步骤: 1. 在“Show History”中找到当前版本(取名:newVersion)和想要回退到的版本(oldVersion) 2. 选择newVersion和oldVersion点击“Copy Revision Number”复制两个版本的版本号: newVersion:2746f428a3...

liu_yulong的专栏 1万+

告别手动改代码!用SSC工具5分钟搞定EtherCAT从站动态模块配置(含Excel模板)

本文详细介绍了如何利用SSC工具和Excel模板实现EtherCAT从站动态模块配置的自动化流程。通过零代码修改的动态配置方案,大幅提升工业自动化产线的灵活性和效率,配置时间从平均4小时缩短至8分钟,错误率下降96%。文章包含Excel模板设计、实战演示和避坑指南,助力工程师快速掌握这一高效工具。

weixin_28339967的博客 571

graphviz安装_又被惊到了!用PlantUML+graphviz+C4 Model画架构图(IDEA版)

一、前言在平常的工作中画一些架构图,流程图应该是再正常不过了,画图的工具也是根据每个人的喜好进行选择,有的选择Visio,有的选择PowerDesigner,还有直接用在线的processOn等。这些工具各有优劣,都能实现画图的目标。但也有一些不足,比如:如何跟团队其他成员进行共享?目前看只能拷贝源文件或复制链接,如何进行版本控制?因为画图也是一个不断迭代的过程,也会有回到之前历史版本的情况。那么...

weixin_39793813的博客 903

cesium加载天地图、OSM、谷歌底图

以上示例是加载矢量底图,若要加载影像或者其他只需要更换相应的url,在WebMapTileServiceImageryProvider中还要更改layer参数。url中’‘vec_w’,一些其他风格,基于CRAT渲染,两种方法效果差别不大。有两种方法加载天地图分别是。对应投影样式,具体可看。还要谷歌的一些卫星底图。

qq_44897914的博客 3002

〔重庆理工大学〕大学物理实验--液体表面张力系数的测定

每个老师要求不同,实验报告内容和数据仅供参考。

Pretty Boy Fox的博客 2803

工具--Git详解

工具–Git详解 一、什么是版本控制 1、什么是版本控制 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。 实现跨区域多人协同开发 追踪和记载一个或者多个文件的历史记录 组织和保护你的源代码和文档 统计工作量 并行开发、提高开发效率 跟踪记录整个软件的开发过程 减轻开发人员的负担,节省时间,同时降低人为错误 没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引

李宥的博客 1万+

Qt5.15.7编译报错问题汇总:python2安装环境导致的问题

导致编译生成的:RegExpJitTables.h文件大小为0。RegExpJitTables.h 能生成且大小不为0KB。可以看到,正确的python路径,执行编译路径后。再执行 configure XXX…尝试直接改,将其改为正确的路径。

MusicScore的博客 1439

Git讲解

git教案

m0_56396386的博客 288

(计算机组成原理)第二章数据的表示和运算-第二节:数字电路基础知识

本文介绍了计算机组成原理中的逻辑门电路、多路选择器和三态门。逻辑门电路包括基本逻辑运算(与、或、非)和复合逻辑运算(与非、或非、异或、同或),这些运算通过门电路实现,并满足分配律和结合律。多路选择器(MUX)用于从多个输入信号中选择一个输出,广泛应用于数据选择、资源共享和逻辑函数实现等场景。三态门则具有三种输出状态(高电平、低电平、高阻态),常用于总线控制和信号隔离。这些元件在数字电路设计和计算机系统中具有重要作用。

快乐江湖的博客 2475

[AI8051U入门第一步]环境安装和按键控制流水灯

本文介绍了AI8051U单片机的开发环境搭建及GPIO应用。主要内容包括:1)通过ISP软件完成Keil开发环境配置;2)AI8051U特性介绍,包括32位8051内核、浮点运算单元及丰富外设;3)GPIO输入输出模式解析,并附流水灯控制代码;4)提供完整的系统初始化、延时函数及LED控制代码实现。文章配套资源包含完整工程代码,适用于智能硬件及物联网开发。

sinat_58149788的博客 672

从Git的存储布局到Git的使用

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录引言.git目录解析git四大对象Committreeblobtagbranchindex(暂缓区)headerindexgit commitgit gc常用的命令有意思的脚本总结 引言 Git是一个分布式版本控制工具,我想其大名在当今互联网界可以说是无人不知,无人不晓。也许学生时代不是刚需,但是工作以后像腾讯,阿里这样的公司团队协作的

李兆龙的博客 826

22、云数据中心网络(DCN)部署最佳实践

本文详细介绍了云数据中心网络(DCN)部署的最佳实践,涵盖SDN设计、服务网络规划、管理网络规划等方面。通过合理的架构设计、路由规划和组件协同,提升数据中心的自动化水平、可靠性及安全性,以满足不断增长的业务需求。

d6e7f8的博客 187

git 的使用(4)-git暂缓区工作区原理和修改删除等命令

这一篇继续,接上。

domorejojo 7500

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

git基本操作(一)

一、git的特点 1、版本控制:可以同时解决多人同时开发的代码问题,也可以解决找回历史代码的问题 2、分布式:Git是分布式版本控制系统,同一个GIt仓库,可以分布到不同的机器上。首先,找一台电脑充当服务器的角色,其他每个人都从这个“服务器”仓库可从一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库,也从服务器仓库拉拉取别人的提交,可以自己搭建这台服务器,也可以使用GitHub网站。 二、安...

weixin_42137701的博客 1423

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Git理解

Git 1,Git是分布式版本控制工具,是用来做版本控制的。 2,Git的核心思想是分布式,快照,状态区,分支,需要对这几个部分好好理解一下。 3,Git的安装与配置(这部分在网上有较多教程,就忽略这部分)。 4,Git的一些基本命令行操作,看这里http://www.cnblogs.com/feng-ye/p/5988091.html。     Git状态区 工作区 暂缓区 历史区 git

JakeyYe的博客 414

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

git checkout命令

git check -- file命令 如果你做了修改,并且觉得修改了不合适那么可以使用git checkout命令,这个命令会用于2中情况 1.你在本地工作区进行修改,但是没有提交到暂缓区。 可以看出你在本地工作区修改了文件,可以理解为untracked的状态。文件没有提交到暂缓区,即文件的状态是在unstaged之前。 这个时候你通过git checkout -- file 命令可以将

balleryang002的博客 957

Git学习(1)

参考网站:廖雪峰教程 git是一个分布式版本控制系统。各个操作系统安装与设置git 创建版本库 在windows上进入git bash界面,在特定目录上建立一个空目录,然后切换至该目录,执行 git init 把空目录作为git仓库。 所有的版本控制系统,都只可以跟踪文本文件的改动,(对图片/视频等二进制文件的版本控制效果不好,对word无法跟踪)不要使用widows自带的记事本编辑...

qq_40123329的博客 210

Git的结构及其基本使用命令

Git基本指令使用

m0_60814304的博客 187

git pull 是到工作区还是暂存区_详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤除命令的区别...

一、可以将git简单的分为三个区域1、工作区(working directory)2、暂缓区(stage index)3、历史记录区(history)如图所示:其中git add files把当前目录中的文件放入暂存区域,这其实做了两件事:1、将本地文件的时间戳、长度,当前文档对象的id等信息保存到一个树形目录中去(index,即平时说的暂存区)2、将本地文件的内容做快照并保存到Git 的对象库 ...

weixin_42394913的博客 499

git进阶--1---HEAD、工作树和索引之间的区别与联系

git进阶--1---HEAD、工作树和索引之间的区别与联系

xiaobangkeji的博客 813

详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤销命令的区别...

一、可以将git简单的分为三个区域 1、工作区(working directory) 2、暂缓区(stage index) 3、历史记录区(history) 如图: 其中git add files 把当前工作目录中的文件放入暂存区域 这其实...

测试0901-1 259

git如何查看缓存区文件内容_详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤销命令的区别...

一、可以将git简单的分为三个区域 1、工作区(working directory) 2、暂缓区(stage index) 3、历史记录区(history)如图:其中git add files 把当前工作目录中的文件放入暂存区域这其实做了两件事: 1、将本地文件的时间戳、长度,当前文档对象的id等信息保存到一个树形目录中去(index,即平时说的暂存区) 2...

weixin_28835789的博客 2831

详解Git工作区、暂存区、历史记录区以及git撤销命令的区别

详解Git工作区、暂存区、历史记录区以及git撤销命令的区别 一、可以将git简单的分为三个区域 1、工作区(working directory) 2、暂缓区(stage index) 3、历史记录区(history) 如图: 其中git add files 把当前工作目录中的文件放入暂存区域 这其实做了两件事: 1、将本地文件的时间戳、长度,当前文档对象的id等信息保存到一个...

峰之流觞的博客 2207
上一篇: CentOS 添加swap分区
下一篇: ubuntu 修改或创建交换分区的大小
ppby2002
博客等级 码龄23年 65粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值