Git 分布式版本控制系统

举报
云物互联 发表于 2021/08/06 01:30:53 2021/08/06
【摘要】 目录 文章目录 目录Git 分布式版本控制系统Git 的基本概念Git 的仓库结构Git 的核心对象Git 的数据结构Git Flow参考文档 Git 分布式版本控制系统 Git 是一个免费的、开源的分布式版本控制系统(Version Control System),本质是一个内容寻址文件系统(Content addressable filesyste...

目录

Git 分布式版本控制系统

Git 是一个免费的、开源的分布式版本控制系统(Version Control System),本质是一个内容寻址文件系统(Content addressable filesystem)。即:Git 的核心是一个简单的键值对数据库(Simple key-value data store)。

你可以向 Git 插入任意类型的内容,它会返回一个键值(Hash,SHA-1 散列),通过该键值可以在任意时刻再次检索该内容,而这些数据全部是存储在 .git/objects 目录内。

Git 的基本概念

在这里插入图片描述

在这里插入图片描述

  • Working Area:本地工作区,对应的文件状态是 Modified(已修改)但还没保存到数据库中。
  • Index/Stage:本地暂存区,对应的文件状态是 Staged,Git 已经对该文件做了标记,下次提交就知道要包含它了。
  • Local Repository:本地仓库,存放本地历史版本信息。对应的文件状态是 Committed,文件已经安全的保存在本地数据库中。
  • Remote Repository:远程仓库。
  • HEAD:当前版本指针,上一个版本是 HEAD^,以此类推。

Git 的仓库结构

一个完整的 Git 仓库也就是 .git 目录,在这个 Local Repo 中存储了 Git 所有的模型对象。

在这里插入图片描述

Git 的核心对象

Git 主要有四个对象,分别是 Blob、Tree、Commit、Tag 他们都用 SHA-1 Key 进行命名。

  • Key:是一个由 40 个十六进制字符组成的字符串。前两个字符用于命名子目录,余下的 38 个字符则用作文件名,这样处理是因为检索优化策略,提高文件系统效率。

  • Value

    • Commit:Actual git commits(提交)= Tree + Blob 的 Snapshot(被追踪的最顶层的 Tree)。
    • Tree:Directoy(目录树),就是一个文件夹。
    • Blob:file content(文件内容),就是单个的文件。
    • Tag:是一个 “固化的分支”,一旦打上 tag 之后,这个 tag 代表的内容将永远不可变,因为 tag 只会关联当时版本库中最后一个 commit 对象。

在这里插入图片描述

注:Branch 与 Tag 不同,Branch 会随着不断的提交,内容会不断的改变,因为分支指向的最后一个 Commit 不断改变。所以一般应用或者软件版本的发布一般用 Tag。

在这里插入图片描述

Git 的数据结构

Git 记录了每个 Snapshot 的 Parent,也就是当前这个目录的上一个版本。那么 Snapshot 迭代更新的过程就可以表示为一个有向无环图。

在这里插入图片描述

每个快照都对应了一次 Commit,这就是 Git 的数据模型:

class commit {
	array<commit> parents
	String author
	String message
	Tree snapshot
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Git Flow

在这里插入图片描述

最简单的 Git Flow 主要有三步:

  1. 在工作区修改文件。
  2. 将文件的快照放入暂存区。
  3. 找到暂存区的文件,将快照永久性存储到 Local Repo。

在这里插入图片描述

详细的说,Git Flow 的项目存在两个长期分支。

  1. 主分支(Master branch):存放对外发布的版本,任何时候在这个分支拿到的,都是稳定的分布版;
  2. 开发分支(Develop branch):用于日常开发,存放最新的开发版。

其次,项目存在三种短期分支,一旦完成开发,它们就会被合并进 Develop 或 Master branch,然后被删除:

  1. 功能分支(Feature branch)
  2. 补丁分支(Hotfix branch)
  3. 预发分支(Release branch)

Git Flow 的优点是清晰可控,缺点是相对复杂,需要同时维护两个长期分支。这个模式是面向 “版本发布” 的,并不适用于 “持续发布(代码一有变动,就部署一次)” 的场景。

参考文档

https://mp.weixin.qq.com/s/l5JU9e6_HrS_-ixiBIrqsA

文章来源: is-cloud.blog.csdn.net,作者:范桂飓,版权归原作者所有,如需转载,请联系作者。

原文链接:is-cloud.blog.csdn.net/article/details/108588674

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。