(软构)git的基本原理

git的基本原理

Difference between git and VCS

区别制版本时,会关心文件内容的具体差异,每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。

在这里插入图片描述

上图是传统VCS,在控制版本时,会关心文件内容的具体差异,每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。

在这里插入图片描述

这是git的版本控制,在版本控制中,只储存发生变化的文件,没有变化的文件并不重新储存,git通过对文件的校检来发现改变。

Git Repository

一个Git仓库包括一下三个部分

  • ​ .git文件夹,这里储存版本控制信息(Configuration Management Database,CMDB)
  • Working directory 工作目录,是本地文件系统
  • staging area 暂存区

对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中
在这里插入图片描述

分别对应已修改(modified),已暂存(staged),已提交(committed)

Git Object Graph

对分支的理解决定了对Git原理的理解

在这里插入图片描述

每次commit会提交一个commit对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先。

  • commit对象:包含指向 tree 对象(根目录)的索引和其他提交信息元数据
  • tree对象: 记录着目录树内容及其中各个文件对应 blob 对象索引
  • blob对象:表示文件快照内容
    在这里插入图片描述

每次提交的对象会包含指向parent对象的指针(首次提交除外),parent一般是之前提交的对象。
在这里插入图片描述

通过指针,来形成多个分支,head指针指向当前工作的分支,每次提交,当前工作分支会自动移向新提交的对象
在这里插入图片描述
在这里插入图片描述

分支合并示意,分支合并一般会涉及三个提交对象,合并策略可选

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LRY01127

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值