Git学习笔记(2) --- References探寻

在上一篇文章Git学习笔记(1) --- 内部存储模式中,已经说了git的内部存储模式以及.git/objects文件中的内容,这一篇文章主要讲讲git内部的references。

References简介

git 除了会存储提交历史,还会存储当前仓库里有哪些分支,哪些tag,以及他们各自对应的commit id;还有当前的HEAD的指向。而这些都是references的工作。

references的本质是:用于存储指向特定commit的指针。主要包括以下几个内容:

  1. tags:存放所有的tag文件
  2. branches:存放所有的brach文件
  3. HEAD: 存储当前操作的commit指向
references 内容

References内容

braches文件夹会存储当前仓库所有的分支,并为每一个分支创建一个单独的文件,分支名就是文件名,如上图,当前仓库就只有一个master分支。

那master文件里面存储的是什么呢?


master文件内容

从上图可以看出,master分支当前的最新的提交是adf0e13,所以master文件存储的就是最新提交的commit id。另外,此时HEAD指针是直接指向master,和master对应的是同一个commit,所以此时HEAD文件内容就是:

HEAD文件内容

如果HEAD指向commit和其他的分支最新提交是一致的,那么HEAD文件的内容就和上图类似,不同就是分支名;如果HEAD是指向其他的commit,与所有的分支指向的都不一致时(例如checkout到之前的提交),此时HEAD文件直接储存所指向的commit id,与master文件类似。

此外,tags文件的存储模式与braches的存储模式一致,因此不再赘述。

如果对本文有什么意见和建议,欢迎讨论和指正!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Git常用语法 [TOC] Git简介 描述 ​ Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,...
    君惜丶阅读 9,043评论 0 13
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 14,649评论 9 163
  • 一朵花误会了一个温暖的日子, 它毫不犹豫,开的灿烂, 结果却错过了真正的春天。 一只鸟,留恋了一个美丽的屋檐, 它...
    遇安哲阅读 2,325评论 1 3
  • 表达课➡️演讲课 演讲:对一群不特定的多数人所做的表达。 演讲的两大要素:(忍不住想要去分享) 1. 找到你想分享...
    挖萝卜smart阅读 5,011评论 1 2
  • 显示隐藏文件夹快捷方式:command+shift+.配置git用户 git config --global us...
    阿洋12138阅读 1,826评论 0 0