git--基本知识点--1--工作区/暂存区/版本库
基本概念
我们先来理解下 Git 工作区、暂存区和版本库概念:
工作区:
就是你在电脑里能看到的目录。
暂存区:
英文叫 stage 或 index
。一般存放在 .git 目录下的index 文件(.git/index
)中,所以我们把暂存区有时也叫作索引(index)。
版本库:
工作区有一个隐藏目录.git
,这个不算工作区,而是 Git 的版本库。
下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:
图中左侧为工作区
,右侧为版本库
。在版本库中标记为"index"
的区域是暂存区(stage/index,标记为 "master"
的是 master 分支所代表的目录树。
图中我们可以看出此时 "HEAD"
实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。本质是一个commit对象指针
。
图中的 objects
标识的区域为 Git 的对象库
,实际位于 “.git/objects” 目录下,里面包含了创建的commit/tree/blob/tag对象
。
当对工作区修改(或新增)的文件执行 git add
命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
当执行提交操作(git commit
)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树(即tree对象)。
当执行 git reset HEAD
命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
当执行 git rm --cached <file>
命令时,会直接从暂存区删除文件,工作区则不做出改变。
当执行 git checkout .
或者 git checkout -- <file>
命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
当执行 git checkout HEAD .
或者 git checkout HEAD <file>
命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
git--基本知识点--1--工作区/暂存区/版本库相关推荐
- 工作区 暂存区 版本库之间的关系
2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/langgege/blog/1796775
- Git——三大分区【工作区 / 暂存区 / 版本区】
前言:Git作为一个版本管理工具,最核心组成思想是它的三个分区:工作区.暂存区和工作区. 1. 工作区 Git的工作区也就是我们平时编辑代码的目录文件夹. 2. 暂存区 暂存区就是一个暂时放置 ...
- Git三大特色之Stage(暂存区)
这是开篇 有人说,暂存区是 Git 最精彩的设计,同时也是最难理解的部分,两者我都感觉不太明显,但当我想写关于暂存区的理解后,发现的确不怎么好讲,这个玩意,有点只可意会的感觉,用 Git 用熟练了,很 ...
- git 的详细使用 操作暂存区
git 大概流程: 1.配置 1.1 配置本机全局的用户名(username)和邮箱(useremail ) 配置 >>>> 查看 一般就是新安装git才需要配置一次 git ...
- git中使已经加入暂存区的文件不再受版本控制
有的时候我们会有这样的需求,自己新建了一个本地仓库,并且执行了 "git add ." 命令,此时所有的文件都加入版本控制,但是有些文件是我们不需要进行版本控制的(比如说VS工具生 ...
- git--工作区、暂存区、本地仓库、远程仓库
原文网址:git--工作区.暂存区.本地仓库.远程仓库_IT利刃出鞘的博客-CSDN博客 简介 本文介绍git的各个区:工作区.暂存区.本地仓库.远程仓库. ...
- git pull 是到工作区还是暂存区_每天一Git之简单理解工作区和暂存区
每天一Git之简单理解工作区和暂存区 1. 工作区与暂存区命令初体验 1.1. 暂存区文件与文件夹管理 [root@number ~]# cd GitDir/git_learning/ [root@n ...
- 工作区、暂存区、版本库、远程仓库
一.概念 1.四个工作区域 Git本地有四个工作区域:工作目录(Working Directory).暂存区(Stage/Index).资源库(Repository或Git Directory).gi ...
- git 工作区和暂存区
Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工 ...
最新文章
- K-Means算法理论及Python实现
- 如何删除一个员工编号及其全部主数据和事务数据?
- 摆脱困境:在每种测试方法之前重置自动增量列
- AUTOSAR从入门到精通番外篇(三)-嵌入式中设计模式的艺术
- 【译】索引进阶(四):页和区
- 合理设置apache的连接数及进程工作方式
- java 调用wget_通过命令行执行WGET下载会更快,而通过Java代码执行时会更慢
- 什么是UPS电源系统
- 图像处理五:python读取图片的几种方式
- make install到指定安装目录
- 如何得到当前程序执行的堆栈
- linux下搜索丢失分区,找回丢失的Linux分区拯救我的硬盘
- PCB、SCH转化为AD工程
- ELK入门(Elastic Stack)
- 华为emui11系统是鸿蒙系统吗,华为EMUI10.1才更新不久,EMUI11就被曝,网友:咋没见鸿蒙?...
- 合工大现代企业管理期末报告--阿里巴巴企业管理模式探究
- 【KNIME经验】兼容读取多种日期格式数据
- macshell配色
- 【005】C++数据类型之实型(浮点数)、有符号数以及无符号数
- 兼容各大浏览器导出Excel
热门文章
- 鸿蒙系统诞生的背景,为何国产系统发展多年无人问津,华为鸿蒙系统刚一开始就引起轰动...
- 计算机本科毕业要求,计算机本科毕业论文要求.doc
- 数学机器人与火星人相遇了
- git上传很多文件报错解决
- UNICODE、GB18030、ASCII编码
- NASA锂电池容量增量数据处理
- AIM Tech Round (Div. 1) C. Electric Charges 二分
- easyui中combobox级联问题
- linux 进程状态 dw,Linux之PID状态信息是如何来的之详解PID stat文件
- 华为又招了一名天才少年!