【Git】第四篇:基本操作(理解工作区、暂存区、版本库)

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

  • 工作区:就是我们创建的本地仓库所在的目录
  • 暂存区: stage或index,一般放在.git(可隐藏文件)目录下的index文件(.git/index)中,所以我们把暂存区有时候也叫做索引(index)
  • 版本库 :工作区有一个隐藏目录.git,所说的版本库就是隐藏的.git目录。

下面的图详细展示了三者之间的关系:

  1. 文件 .git/index是记录了文件名、文件的状态信息(时间戳、文件长度等)等的文件索引的目录树。
  2. Git 对象库(.git/objects)中保存的是文件索引中所指定的文件实体。
  3. 图中左侧为工作区 ,右侧为版本库 。在版本库中标记为 "index " 的区域是暂存区(stage, index)或者索引区 ,标记为 "master" 的是 master 分支所代表的目录树。
  4. 图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。
  5. 当对工作区修改(新增、修改、删除)的文件执行 "git add" 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库(objects)中的一个新的对象中,而该对象的ID 被记录在暂存区的文件索引(index)中。
  6. 当执行提交操作(git commit)时,暂存区的目录树写到版本库中的对象库(objects)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
相关推荐
C++ 老炮儿的技术栈1 小时前
在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
c语言·c++·windows·git·vscode·visual studio
Robin罗兵4 小时前
git使用教程2
git
bob_young7 小时前
Git LFS + Gerrit 配置+lfs-test-server(git lfs push总是提示输入https密码解决)
git·lfs
半夏微凉半夏殇10 小时前
git add . 是否会包含.o、.so、.ko文件?深度解析与避坑指南
git
牟同學10 小时前
Git 实战场景操作大全(可直接落地)
git
不做无法实现的梦~11 小时前
使用ros2跑mid360的fastlio2建图
git·单片机·嵌入式硬件·gitcode
长沙红胖子Qt13 小时前
SVN培训笔记(二):使用sourceTree通过git桥接管理svn项目
git·svn·sourcetree·sourcetree管理svn
半夏微凉半夏殇14 小时前
从多仓库到单仓库:如何高效迁移并统一管理多个Git项目
git
__万波__15 小时前
解决警告“..LF will be replaced by CRLF the next time Git touches it“
git
Software攻城狮15 小时前
git报错处理
git