基本概念

我们先来理解下 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--工作区/暂存区/版本库相关推荐

  1. 工作区 暂存区 版本库之间的关系

    2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/langgege/blog/1796775

  2. Git——三大分区【工作区 / 暂存区 / 版本区】

    前言:Git作为一个版本管理工具,最核心组成思想是它的三个分区:工作区.暂存区和工作区. 1. 工作区   Git的工作区也就是我们平时编辑代码的目录文件夹. 2. 暂存区   暂存区就是一个暂时放置 ...

  3. Git三大特色之Stage(暂存区)

    这是开篇 有人说,暂存区是 Git 最精彩的设计,同时也是最难理解的部分,两者我都感觉不太明显,但当我想写关于暂存区的理解后,发现的确不怎么好讲,这个玩意,有点只可意会的感觉,用 Git 用熟练了,很 ...

  4. git 的详细使用 操作暂存区

    git 大概流程: 1.配置 1.1 配置本机全局的用户名(username)和邮箱(useremail ) 配置 >>>> 查看 一般就是新安装git才需要配置一次 git ...

  5. git中使已经加入暂存区的文件不再受版本控制

    有的时候我们会有这样的需求,自己新建了一个本地仓库,并且执行了 "git add ." 命令,此时所有的文件都加入版本控制,但是有些文件是我们不需要进行版本控制的(比如说VS工具生 ...

  6. git--工作区、暂存区、本地仓库、远程仓库

    原文网址:git--工作区.暂存区.本地仓库.远程仓库_IT利刃出鞘的博客-CSDN博客 ​​​​​​​​​​​​​​简介         本文介绍git的各个区:工作区.暂存区.本地仓库.远程仓库. ...

  7. git pull 是到工作区还是暂存区_每天一Git之简单理解工作区和暂存区

    每天一Git之简单理解工作区和暂存区 1. 工作区与暂存区命令初体验 1.1. 暂存区文件与文件夹管理 [root@number ~]# cd GitDir/git_learning/ [root@n ...

  8. 工作区、暂存区、版本库、远程仓库

    一.概念 1.四个工作区域 Git本地有四个工作区域:工作目录(Working Directory).暂存区(Stage/Index).资源库(Repository或Git Directory).gi ...

  9. git 工作区和暂存区

    Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工 ...

最新文章

  1. K-Means算法理论及Python实现
  2. 如何删除一个员工编号及其全部主数据和事务数据?
  3. 摆脱困境:在每种测试方法之前重置自动增量列
  4. AUTOSAR从入门到精通番外篇(三)-嵌入式中设计模式的艺术
  5. 【译】索引进阶(四):页和区
  6. 合理设置apache的连接数及进程工作方式
  7. java 调用wget_通过命令行执行WGET下载会更快,而通过Java代码执行时会更慢
  8. 什么是UPS电源系统
  9. 图像处理五:python读取图片的几种方式
  10. make install到指定安装目录
  11. 如何得到当前程序执行的堆栈
  12. linux下搜索丢失分区,找回丢失的Linux分区拯救我的硬盘
  13. PCB、SCH转化为AD工程
  14. ELK入门(Elastic Stack)
  15. 华为emui11系统是鸿蒙系统吗,华为EMUI10.1才更新不久,EMUI11就被曝,网友:咋没见鸿蒙?...
  16. 合工大现代企业管理期末报告--阿里巴巴企业管理模式探究
  17. 【KNIME经验】兼容读取多种日期格式数据
  18. macshell配色
  19. 【005】C++数据类型之实型(浮点数)、有符号数以及无符号数
  20. 兼容各大浏览器导出Excel

热门文章

  1. 鸿蒙系统诞生的背景,为何国产系统发展多年无人问津,华为鸿蒙系统刚一开始就引起轰动...
  2. 计算机本科毕业要求,计算机本科毕业论文要求.doc
  3. 数学机器人与火星人相遇了
  4. git上传很多文件报错解决
  5. UNICODE、GB18030、ASCII编码
  6. NASA锂电池容量增量数据处理
  7. AIM Tech Round (Div. 1) C. Electric Charges 二分
  8. easyui中combobox级联问题
  9. linux 进程状态 dw,Linux之PID状态信息是如何来的之详解PID stat文件
  10. 华为又招了一名天才少年!