git简介与原理

git简介

git是一个免费开源的分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。

git内部原理

从根本上来讲 Git 是一个内容寻址(content-addressable)文件系统,并在此之上提供了一个版本控制系统的用户界面。 Git 的核心部分是一个简单的键值对数据库(key-value data store)。 你可以向 Git 仓库中插入任意类型的内容,它会返回一个唯一的键,通过该键可以在任意时刻再次取回该内容。


git对象

数据对象(blob object)

执行git add 文件名 后,.git\objects目录下生成一个子目录, 根据子目录名+目录下的文件名,可以定位到数据对象,该对象保存的就是文件内容。

子目录名+目录下的文件名:98715990d2f395dc2b34d82c8c571ca03f44ea0e

执行  git catp-file -t  98715990d2f395dc2b34d82c8c571ca03f44ea0e ,可以返回该文件的类型。

执行  git cat-file -p 98715990d2f395dc2b34d82c8c571ca03f44ea0e  , 可以查看该文件内容。

树对象

如下图

树对象的结构对应了目录结构,包含目录跟文件, 一个树对象包含了一条或多条树对象记录。

用 git cat-file -p master^{tree}  可以查看分支上最新的提交所指向的树对象。

​​​​​​​

提交对象

执行git commit-m “描述信息” 后,.git\objects目录下生成一个子目录, 根据子目录名+目录下的文件名,可以定位到提交对象。

用 git cat-file -p 子目录名+目录下的文件名 查看提交对象内容

提交对象有固定的格式:

顶层树对象,代表当前项目快照;

父提交id;

作者/提交者信息;

空行;

提交注释;

git引用

​​​​​​​HEAD引用

HEAD 文件通常是一个符号引用(symbolic reference),指向目前所在的分支。 所谓符号引用,表示它是一个指向其他引用的指针。

cat HEAD,查看HEAD文件,内容是指向当前分支。

​​​​​​​远程引用

如果你添加了一个远程版本库并对其执行过推送操作,Git 会记录下最近一次推送操作时每一个分支所对应的值,并保存在 refs/remotes 目录下。

cat refs/remotes/origin/master, 查看远程引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值