Git学习笔记——实战与进阶

Git本地仓库组成与运作

1 Git对象

Git的对象存放于.git/object文件下。
支撑了用户在Git的工作区随意切换仓库和已包含的分支或节点。
Git有四种对象:标签对象,提交对象,树对象,块对象。他们之间层层指向。

标签对象 tag通常用作某个提交对象的别名,如Branch name和Tag name
提交对象 commit指向一个目录树的对象
树对象 tree指向下一级树对象或者当前目录下的文件
块对象 blob存储了项目文件的实际数据

**Git对象间的关联查找:**通过键值对层层实现。Git项目仓库也被称为键值对型文件数据库。
**Git对象的键:**是依据其对应的工作区的文件内容等信息,通过SHA-1等散列函数计算得到的。

2 Git包文件

越详细的信息意味着越大的空间开销与传输开销,Git对象会随着项目提交而逐渐浮肿。通过git gc命令将其压缩打包成为体积更小的二进制包文件(pack file)
如果存在太多松散对象(loose object,不在packfile中的对象)或pack file,Git会自动运行auto gc命令。收集所有松散对象并将他们存入pack file;合并这些pack file为一个较大的pack file;将不被任何commit引用并且已经存在一段时间的对象删除。

关闭auto gc命令:执行git config gc.auto 0关闭auto gc,Git命令执行过程中不再受gc中断干扰。
手动执行垃圾收集命令:执行git gc --auto来清理臃肿的对象文件,并优化本地存储库

3 Git索引

Git索引是工作区与仓库区的中转站。
Git索引从文件角度讲是.git项目仓库下的index文件;功能逻辑上讲也叫暂存区(stage area)
Git索引是一个临时的、动态的二进制文件,他描述整个版本库的目录结构。

暂存区支撑了Git灵活的原子性提交,实现分步使用git add
暂存区支持用户灵活回退的操作空间,提升效率

Working Directory Staging Area .git directory(Repo) Stage Fixes(git add/mv/rm) Commit Checkout the project Working Directory Staging Area .git directory(Repo)

4 暂存区

Git远端项目协作形式

Git项目管理信任链

Git钩子机制与价值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值