Git教程
01、Git 基础教程
02、Git 安装 – Linux
03、Git 安装 – Window
04、Git 安装 – Mac OS
05、Git 配置 – git config
06、Git 工作流程
07、Git 工作区、暂存区和版本库
08、Git 创建仓库 – git init
09、Git 添加文件到暂存区- git add
10、Git 提交文件到版本库 – git commit
11、Git 克隆仓库 – git clone
12、Git 删除文件 – git rm
13、Git 重命名文件 – git mv
14、Git 取消已缓存 – git reset HEAD
15、Git 分支管理 – git branch
16、Git 查看提交历史 – git log
17、Git 标签 – git tag
18、Git 远程仓库 ( Github )
19、Git 远程服务搭建
20、Git 快速参考手册
21、Git 基本操作
22、Git Flow
本文档使用 MrDoc 发布
-
+
首页
07、Git 工作区、暂存区和版本库
我们已经了解了使用 Git 进行日常开发的基本流程,现在我们来学习 Git 三大基本概念 Git日常开发几乎都是与 工作区、暂存区和版本库打交道 ### **工作区、暂存区和版本库** ------------ 1、 **工作区:**我们在电脑上能看到的目录; 2、 **暂存区:**英文stage,或index; ```python 暂存区一般存放在 ".git目录下" 下的 index 文件 ( .git/index )中 有些地方把暂存区有时也叫作索引 ( index ) ``` 3、 **版本库:**工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库; ### **工作区、暂存区和版本库在目录中的位置如下**  ### **工作区、暂存区和版本库关系图示** 下图展示了工作区、版本库中的暂存区和版本库之间的关系  图中 - 左侧为工作区 - 右侧为版本库 - 在版本库中标记为 “index” 的区域是暂存区(stage, index) - 标记为 “master” 的是 master 分支所代表的目录树。 - 图中我们可以看出此时 “HEAD” 实际是指向 master 分支的一个”游标” 所以图示的命令中出现 HEAD 的地方可以用 master 来替换 - 图中的 objects 标识的区域为 Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容 ### **git 命令的效果** 1、 当对工作区修改(或新增)的文件执行gitadd命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中; 2、 当执行提交操作 `git commit -m <message>` 时,暂存区的目录树写到版本库(对象库)中,`master`分支会做相应的更新;即 master 指向的目录树就是提交时暂存区的目录树。 3、 当执行`git reset HEAD`命令时,暂存区的目录树会被重写,被master分支指向的目录树所替换,但是工作区不受影响; 4、 当执行`git rm --cached <file>`命令时,会直接从暂存区删除文件,工作区则不做出改变; 5、 当执行`git checkout.`或者`git checkout --<file>`命令时,会用暂存区全部或指定的文件替换工作区的文件;!!这个操作很危险,会清除工作区中未添加到暂存区的改动!! 6、 当执行`git checkout HEAD.`或者`git checkout HEAD <file>`命令时,会用HEAD指向的master分支中的全部或者部分文件替换暂存区和以及工作区中的文件;!!这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动!!
李智
2025年3月17日 13:26
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码