详解.git目录
剩下的四个文件很重要:HEAD 文件、(尚待创建的)index 文件,和 objects 目录、refs 目录。
它们都是 Git 的核心组成部分。
objects目录存储所有数据内容;refs目录存储指向提交对象的指针,包括:分支、远程仓库和标签等;HEAD文件指向当前工作的分支;index文件保存暂存区的信息。
objects目录
objects目录用于存储Git中的所有对象。
可以看到在一个新的Git本地版本库中, Git 对 objects 目录进行了初始化,并创建了 pack 和 info 子目录,但均为空。
数据对象、树对象、提交对象、标签对象,均以单独文件的形式保存在 .git/objects 目录下。
虽然数据对象的内容几乎可以是任何东西,但提交对象和树对象的内容却有各自固定的格式。
Git中四个对象关系如下:

Pack文件夹说明:
Git有一个自我梳理的过程,如果Git仓库中松散的文件比较多的话,pack会对这些文件进行打包,打了包的文件是放在pack文件夹里边的。
Git 打包对象时,会查找命名及大小相近的文件,并只保存文件不同版本之间的差异内容。
refs目录
如果你对仓库中从一个提交(比如 1a410e)开始往前的历史感兴趣,那么可以运行 git log 1a410e 这样的命令来显示历史提交记录,不过你需要记得 1a410e 是你查看历史的起点提交。 如果我们有一个文件来保存 SHA-1 值,而该文件有一个简单的名字, 然后用这个名字指针来替代原始的 SHA-1 值的话,会更加简单。
在 Git 中,这种简单的名字被称为“引用(references,或简写为 refs)”。 你可以在 .git/refs 目录下找到这类含有 SHA-1 值的文件。
.git/refs 目录内容如下:
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/git_learning (d

本文详细介绍了Git版本控制系统中的关键组件,包括objects目录存储所有数据内容,refs目录保存分支、远程仓库和标签的指针,HEAD文件指示当前工作分支,以及index文件管理暂存区信息。此外,还讨论了pack文件夹的打包过程和logs目录的历史记录功能。
最低0.47元/天 解锁文章
352

被折叠的 条评论
为什么被折叠?



