企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
## 1.3 Git 基础 **直接记录快照,而非差异比较** Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异;若文件数据发生变化,Git 会将文件作快照后,记录在一个微型的文件系统中;每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引;若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。 ![](https://img.kancloud.cn/81/28/81289eb975b34addad0f2a2d10336985_800x305.png) **近乎所有操作都是本地执行** Git 在本地磁盘上就保存着所有当前项目的历史更新。 **时刻保持数据完整性** 在保存到 Git 之前,所有数据都要进行内容的校验和(Checksum)计算,并将此结果作为数据的唯一标识和索引(而不是文件名);Git 使用 SHA-1 算法计算数据的校验和,通过对文件的内容或目录的结构计算出一个 `SHA-1` 哈希值,作为指纹字符串。该字符串由 40 个十六进制字符(0-9 及 a-f)组成,看起来就像是: ``` 24b9da6552252987aa493b52f8696cd6d3b00373 ``` **多数操作仅添加数据** 常用的 Git 操作大多仅仅是吧数据添加到数据库。因为任何一种不可逆的操作,比如删除数据,都会使回退或重现历史版本变得困难。 **三种状态** Git 文件有三种状态:已提交(committed)、已修改(modify)和已暂存(staged) * 已修改:表示修改了的文件,但是还没有保存到数据库中 * 已暂存:表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中 * 已提交:表示数据已经安全地保存在本地仓库的数据库中 由此对应 Git 中三个工作区域的概念: * 工作目录(Working Directory):修改过的文件,但并未通过 Git 跟踪 * 暂存区域(Stage):一个文件,保存了下次将提交的文件列表信息 * 仓库目录(Repository):工作区中的隐藏目录 `.git` ,用来保存项目的元数据和对象数据库的地方 ![](https://img.kancloud.cn/93/c7/93c7eec346188bbabdf255087762327e_800x441.png) 基本的 Git 工作流程: * 在工作目录中修改文件 * 暂存文件,将文件的快照放入暂存区域 * 提交更新,找到暂存区域的文件,将快照永久性储存到 Git 仓库目录