git# principle

本文深入解析Git的工作原理,包括其如何通过快照而非增量来管理文件版本,以及本地化操作带来的速度优势。此外还介绍了Git中文件的状态变化、内容寻址文件系统的特性、底层与高层命令的区别、对象存储方式及引用的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. git不保存增量,维护的是整个文件的快照,版本控制中保存的是快照的索引。如果文件没有变化,则用链接代替快照。
  2. git可以完全在本地操作。这种本地化大大加快了绝大部分操作的速度。
  3. 所有的标记都依赖校验和。版本有哈希值,文件也有哈希值。哈希是数据的唯一标识和索引,是git 的设计哲学。
  4. 每一个文件都处于如下4种状态中的一个:untracked, not-staged, staged, commited。untrucked 表示没纳入版本管理,not-staged表示没有把修改的文件暂存为下次需要提交的文件,staged就是已经暂存为下次commit需要提交的文件,committed就是已经提交的文件。所以,一般新添加一个文件就是untracked,修改文件没有add 就是not-staged状态,add之后就是staged状态。
  5. git有人称做是“内容寻址 (content-addressable) ”文件系统。
  6. git有所谓的底层命令 (Plumbing) 和高层命令 (Porcelain),我们日常使用的版本管理命令都是高层命令。
  7. git目录下的object存储的所有数据内容,并以键值对的方式存储。所有的内容都会计算成一个40个字节长的hash值,然后前两个字节工作目录,后38个自己为文件名。这个hash计算的不只是文件的内容,还有文件的类型,长度等拼接之后的数据,最后通过zlib压缩后才最终写入磁盘。文件类型除了blob外还可以是tree和commit。
  8. git对象和树对象。tree对象类似linux文件系统中的目录,blob对象类似于inode或者文件内容。
  9. git 引用,其实就是一个指针。指向某个hash链中的某个节点。底层的命令是update-ref
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值