美文网首页大虾带着小虾米
Git学了就忘(14) 之 .git目录详解(2)

Git学了就忘(14) 之 .git目录详解(2)

作者: 繁华似锦Fighting | 来源:发表于2019-08-27 06:11 被阅读0次

接上一篇

3、refs文件夹

上篇说HEAD中文件的内容是一个引用。

查看HEAD文件内容
ref: refs/heads/temp:内容中的refs/是否指的是这个refs文件夹?

进入refs文件夹中查看一下:

查看refs文件夹

(1)看到里边refs文件夹中有heads和tags两个文件。

tag :表示标签的意思。标签在很多书中也叫做里程碑*。

里程碑:就是项目开发到一定程度,有一个关键的成果了,比如开发到v1.0版本,可以针对v1.0版本这个commit,打上一个标签,标识这里是一个里程碑。

而这个目录叫tags,意味着Git仓库是可以有很多个标签

heads:对应的就是分支。

分支:代表一个独立的开发空间,在不同的分支里边工作是互不影响的。当需要集成的时候,可以个多个分支集成到一个公共的分支上边去。

(2)进入到heads文件夹中查看

  • 里边有两个文件,master文件temp文件
heads文件夹内容
  • 查看一下master文件
master文件

93342131af7c2d28f3461c45e683c62741135419是什么东西?

他是一串Hash值,表示一个ID值。

通过$ git cat-file -t + 上边ID查看它是一个什么类型。

注:ID值不用全部,唯一即可。

查看类型

发现它是一个commit类型,说明这一串字符代表一个commit提交。

这个时候查看一下分支的信息

执行git branch -av命令

分支信息

发现master分支指向的就是我们上边查看到的commit,ID是9334213。

所以master文件存放的是master分支的指针,指向的是哪一个commit。

  • temp文件同理。

这里在解释一下:
可以看到Git有长的ID值,有短的ID值,Git的处理方式是如果这个ID的hash值足以标志唯一性了,那么短一点没关系,如果出现重复了,Git不能识别短的ID值的唯一性的时候,就需要你输入更长一点的ID值。

这里需要总结一下:

.git目录下的HEAD文件所引用的是refs目录下中,heads目录里的文件。heads目录中的每一个文件代表一个分支。文件中的内容代表一个commit。

如下图:HEAD执行了refs/heads目录中的分支,分支指向了某一个commit。

关系图

这就是.git文件中HEAD文件和refs/heads/目录下文件的关系。

有点绕,慢慢理解。

相关文章

网友评论

    本文标题:Git学了就忘(14) 之 .git目录详解(2)

    本文链接:https://www.haomeiwen.com/subject/jvflectx.html