git只提交一张图片_几张图让你彻底弄懂git工作流(三) ——git深入

Git深入

在 Git 中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先存储快照——仓库中的各个对象保存的数据和相互关系如下单个提交对象在仓库中的数据结构文字描述AAffA0nNPuCLAAAAAElFTkSuQmCC

imagegit commit 提交对象前,git会先计算每一个子目录的校验和,然后在git仓库中将目录保存为树对象,所以在创建提交对象不担包含提交信息还包含指向树(项目根目录)的指针,在将来需要的时候,重现此次快照的内容

如上五个对象:三个文件快照内容blob对象,一个目录树内容及其中各个文件对应 blob 对象索引的 tree 对象,一个包含指向 tree 对象(根目录)的索引和其他提交信息元数据的 commit 对象git存储解构示意图图示文字描述AAffA0nNPuCLAAAAAElFTkSuQmCC

image有三个提交的Git仓库可简化为左图

AAffA0nNPuCLAAAAAElFTkSuQmCC

image上面只有提交的图补上分支后

AAffA0nNPuCLAAAAAElFTkSuQmCC

image上面的图补上HEAD后,如左图所示

.git目录介绍

Git仓库下有一个.git目录,里面存储了git全部的秘密,一般包括下面的内容:config

config是仓库的配置文件,一个典型的配置文件如下,我们创建的远端,分支都在配置文件里有表现; fetch操作的行为也是在这里配置的

index

HEAD

HEAD文件存储的是当前所在的位置,其内容可以使分支名字,40位commit ID

hooks/

logs/

refs/

refs目录存储都是引用文件,如本地分支,远端分支,标签等

refs/heads/xxx 本地分支

refs/remotes/origin/xxx 远端分支

refs/tags/xxx 本地tag

objects/

git通过一种算法可以得到任意文件的指纹(40位16进制数字),然后通过文件指纹存取数据,存取的数据都位于objects目录文章出处:起底Git & Pro Git

作者:Li_小点

链接:https://www.jianshu.com/p/11a5c69b881c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值