Git工作区,暂存区和版本区

原创 2016年08月28日 19:23:17

Git工作区,暂存区和版本区

 

基本概念

 

这里出现了三个名词:工作区,暂存区,版本库.

 

工作区:你工作的地方,你在哪里工作呢?肯定是你的电脑上,那么工作区就是你在电脑里能看到的目录.

暂存区:英文名叫stage或者index.听名字就知道是暂时的,不是永久的,数据会经常的发生变化,这个区域一般存放在’git目录’下的index文件(.git/index),我们把暂存区有时候也叫做索引(index).

版本库:工作区中有一个隐藏目录.git,这个不算工作区,而是Git的版本库.

 

简单说一下这个图,图中的左侧为工作区,右侧为版本库.在版本库中标记为’index’的区域就是暂存区(stage或者index),标记为’master’的是master分支所代表的目录树.

 

图中我们可以看出此时”HEAD”实际是指向master分支的一个’游标’.所以图示的命令中出现HEAD的地方可以用master来替换.


图中objects标识的区域为Git的对象库,实际位于’.git/object’目录下,里面包含了创建的各种对象以及内容.

 

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

 

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

 

当执行’git reset HEAD’命令时,暂存区的目录树会被重写,master分支指向的目录树所替换,但是工作区不受影响.

 

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

 

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

 

这里主要的是说一些Git在执行命令的时候,各个文件的情况和变动情况.

相关文章推荐

Git 工作区、暂存区和版本库

Git 工作区、暂存区和版本库 暂存区(stage, index)是 Git 最重要的概念之一,理解了这个概念很多 Git 命令就不再那么神秘了。今天在写这部分的内容,画了一个图,看看有没有什么问题...
  • felix_f
  • felix_f
  • 2013年12月11日 20:00
  • 6285

【Git学习笔记】重要概念:工作区和暂存区

Git架构是分为工作区(workding directory)和仓库()的

Git学习3:理解工作区和暂存区

在Git学习过程中,遇到了如下几个概念:工作区、暂存区和版本库。刚开始觉得Git不就是一个版本控制系统嘛,搞这么多概念干嘛。实际上正是这些概念,让Git的版本控制更加便捷和高效。而Git相比其他版本控...

关于Spring-JPA框架下使用多表查询的应用实例记录

1.目的:记录如何 用jpa来实现快速的多表查询, 暂不深入探究jpa的内部实现 2. 说明情形: @1所涉及的表为t_user(id,name,date,...);t_factory_user(...

【spring data jpa】带有条件的查询后分页和不带条件查询后分页实现

一.不带有条件的查询 分页的实现

git工作区、暂存区、版本库之间的关系

转载学习

Git 工作区、暂存区和版本库

Git 工作区、暂存区和版本库

Git(版本回退、工作区与暂存区、管理修改、撤销修改、删除文件)常用操作及原理

git常用的版本控制操作

Git 版本回退/工作区和暂存区

初始化一个Git仓库,使用git init命令。 添加文件到Git仓库,分两步: 第一步,使用命令git add ,注意,可反复多次使用,添加多个文件; 第二步,使用命令git commit,完...

Git的工作区、暂存区和版本库之间的关系及其互操作

工作区,暂存区和版本库之间的关系 工作区:我们会想当然的认为,当前仓库所在目录就是我们的工作区,其实这是不完全正确的。在当前仓库中,新增,更改,删除文件这些动作,都发生在工作区里面。 暂存区:英文...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Git工作区,暂存区和版本区
举报原因:
原因补充:

(最多只允许输入30个字)