当前位置: 首页 > news >正文

git的底层原理

git的底层原理

三段话总结git,

1. 工作原理:git管理是一个DAG有向无环图,HEAD指针指向branch或直接指向commit,branch指向commit,commit指向tree,tree指向别的tree或直接指向blob。

2. git所管理的一个目录,几乎所有相关信息都写在.git目录下的子目录或子文件中。

3. 工作区就是编辑文件和目录的地方,也就是除过.git目录之外的,用户可以显示编辑的project目录的文件数据。暂存区(stage)就是.git/index二进制文件和.git/object/目录下新增加的blob对象,.git/index二进制文件里面保存的是git跟踪的所有文件的hash值和文件名,包括之前跟踪的,本次没有修改过的,也包括本次git add的文件。如果没有git add,即使工作区有文件新增或修改了,.git/index二进制文件也不会记录这些,.git/object/目录下不会新增blob对象。那么git add的目的就是让工作区发生的修改被记录到.git/index二进制文件中,而且同时会在.git/object/目录下产生一个新的存放blob对象的目录,这个blob在.git/object/目录下的一个新目录的文件中,这个文件的名称是git ls-files --stage看到的hash值,应该是sha1算法算出来的,这个文件里面的内容是二进制数据,用vim打开不能text显示。然后git commit的时候会产生新的tree和commit对象,HEAD指针会移动,HEAD指针的记录,和commit的log日志等。所以暂存区可能更应该理解为.git/index文件和.git/object/下的blob对象的存储,而不仅仅是.git/index文件的更新。

4. 应该可以这样说,git几乎所有的配置以及指针、索引等信息都在./git目录下,git命令调出来的信息都来自于这里面的文件。所以搞清楚git,熟悉git的底层原理和各种操作。应该都可以以这些文件为基础,这个就有点符合其作者Linus的风格了,和Linux一样,一切皆文件,越简单越好,不过度设计,脾气暴躁,简单直接,以C语言为基础,软件风格也是C语言的感觉。

上面这个图,要从右向左看

上面这个图,要从左向右看

git的每次commit都会产生一个校验和,这个校验和是通过SHA-1算法算的(Secure Hash Algorithm 1),SHA-1是一种加密散列函数,用于生成数据的唯一固定大小的哈希值。在Git中,这个哈希值用于标识对象(如commit、tree、blob等),保证了数据的完整性和版本的唯一性。

这里顺便提一下几个加密算法的情况

md5sum 

sha1sum

sha256sum

sha512sum

算出来的校验和长度越来越长,也越来越安全。

话说回来,git每一次的commit都会产生一个hash值。这个值是唯一的,相当于保存了每一次提交的目录树结构和具体的文件的情况。就比如给一个项目目录的所有情况打了一个快照。如果要切换到这个状态,或者使用这个状态,用hash值作为索引就能找到这个快照。

相关文章:

  • 参数问题~
  • 如何区别在Spring Boot 2 和 Spring Boot 3 中使用 Knife4j:集成与配置指南
  • SinoSteel生产企业ERP实施建议书final(143页PPT)(文末有下载方式)
  • 数据库:一文掌握 GraphQL 的各种指令(GraphQL指令备忘)
  • 【HDLBits】Circuits—Combinational Logic合集(包含答案推导过程)
  • 有序数组双指针问题
  • Flutter TextFormField 完全手册与设计最佳实践
  • MyBatis 中 #{} 和 ${} 的区别详解
  • 前沿分享|处理LLM幻觉问题-CoN|笔记链:增强检索增强语言模型的鲁棒性
  • 数据中台建设系列(一):数据中台的前世今生
  • Spring AI Alibaba ChatModel使用
  • debian12 安装docker服务
  • Java 方法执行原理底层解析
  • spss statistics 在mac上安装
  • 【leetcode hot 100 131】分割回文串
  • Docker 安装 Mysql
  • Ubuntu 20.04 安装并使用Cursor
  • go语言中的strings库
  • 蓝桥杯 R格式
  • Redis常见阻塞原因总结
  • 小马智行彭军:今年是Robotaxi量产元年,有望3年后盈亏平衡
  • 2025一季度,上海有两把刷子
  • 著名诗人、中国城市发展研究院原常务副院长吕贵品逝世
  • 2025年中央金融机构注资特别国债发行,发行金额1650亿
  • 看正背面月壤、听火星上的声音,记者探营“中国航天日”科普展
  • 被电诈100万元又要被骗71万元,女子经民警近8小时劝阻幡然醒悟