你知道 Git 是如何做版本控制的吗?(转)

您所在的位置:网站首页 你知道github吗 你知道 Git 是如何做版本控制的吗?(转)

你知道 Git 是如何做版本控制的吗?(转)

2024-04-24 04:37| 来源: 网络整理| 查看: 265

这里的结果是我项目中 CHANGELOG.md 文件的内容。更确切的说,它是 CHANGELOG.md 文件在某一次提交时的完整内容。而这个 objects 文件夹,就是 Git 存放数据的地方。

Git 在每次提交时,会找到存在变更的文件,利用 SHA-1 算法根据内容计算出 40 位的字符串为文件命名,放在 objects 文件夹。 哈希值的前两个字符用于命名子目录,余下的 38 个字符则用作文件名。 也就是说,你的文件每次发生变更,都会有一个对应的快照,保存了该版本文件的所有内容。如果 Git 想恢复文件到某一次历史版本,只需要拿到这个文件该次版本对应的哈希值即可。

可是 Git 怎么知道某次提交时该文件对应版本的哈希值是什么呢?也就是说 Git 如何把文件不同版本和提交记录关联起来的?

实际上在 objects 文件夹里主要存放着三类信息,除了我们上面提到的文件内容信息,还有文件路径信息以及提交信息。它们分别以 文件对象 blob object、树对象 tree object、提交对象 commit object 的形式存在。每一个对象都是 objects 目录下的一个文件,和保存文件内容信息的方式类似,Git 会通过 SHA-1 算法根据对象内容计算哈希值,得到一串 40 位的字符串为文件命名,用于找到他们。 接下来我们来看树对象和提交对象都包含了哪些内容。

当你提交时,Git 会把你当前的目录结构保存下来,对应的 tree object 结构如下:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3