版本控制git

git版本控制概念

现代软件工程存在多人协作&版本管理的需求。由于软件体量较大,通常现代软件的工作量不是单人可完成的,需要多人协作。那么如何分工,如何将大家的修改统一管理、统一控制就成了比较关键的需求。git本质就是为了满足这些需求。本文主要记录git的底层实现,并尝试梳理这种底层实现的设计语言在实现版本控制需求中的优点。

git版本控制数据结构

主要分为blob和tree两种结构,blob指示文件,tree指示文件夹。tree的数据结构里包含tree和blob,代表文件夹内的子文件夹和文件本体。
Blob 和 tree 的内容,共同组成了某次版本的快照(snapshot),git使用有向无环图来对历史版本建模。
blob:array
tree:array[union[blob, tree]]
以下root 目录文件结构为例:
在这里插入图片描述
提交修改后,snapshot之间的前后关系会由git记录,并且不同人修改的分支最终能合并在一起。如果出现了共同修改的地方,合并式会上报冲突,由程序员自己确定合并规则。
在这里插入图片描述
git中基本的数据结构整理:
git伪代码

Git基本命令使用

Git add --将修改添加至暂存区,准备commit到snapshot中;
Git commit --将暂存区中的修改提交,生成一次commit 哈希值,这个哈希值对应该次snapshot,会和tree的修改哈希对应,tree里再包括blob的哈希修改。这些索引可以用git cat-file一层层查到。
Git status --显示当前提交和暂存区的状态
Git log --显示历史提交信息
Git checkout --将当前目录切换到其他git历史状态,如切换branch,切换commitID等

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值