`

2.Git的对象模型

    博客分类:
  • Git
 
阅读更多

Git的对象模型:

SHA:

所有用来表示项目历史信息的文件,都是通过一个40个字符的“对象名”来索引的,对象看起来象这样:

adedae6173d56ebfa0b3965dc25229ff7554a9

每个“对象名”都是“对象”内容做SHAI哈希计算得来的,SHAI是一种密码学的哈希算法。这样做意味着两个不同内容的对象不可能有相同的“对象名”。

 

这样做的好处:

. Git只做比较对象名就可以很快判断两个对象是否相同

. 因为在每个仓库的“对象名”的计算方法都完全一样,如果同样的内容存在不同的仓库中,就会存在相同的“对象名”下,节约空间。

. Git还可以通过检查对象内容的SHAI的哈希值和“对象名”是否相同,来判断对象内容是否相同。

对象:object

每个对象包括三个部分:类型、大小、内容。大小就是指内容的大小,内容取决于对象的类型。

有四种类型的对象:“blob”、“tree”、“commit”、和“tag”。

. “blob”用来存储文件数据,通常是一个文件

. “tree”有点像一个目录,它管理一些t“ree”和“blob”(就像文件和目录)

. 一个“commit”只指向一个“tree”,它用来标记项目某一个时间点的状态。它包括一些关于时间点元数据,比如:时间戳、最近一次提交者、指向上次提交(commits)的指针等。

. 一个“tag”是来标记某一个提交的“commit”方法。

 

几乎所有的Git功能都是使用这四种简单对象类型完成的。它就像在你本机的文件系统上构建一个小的文件系统。

与SVN的区别:

SVN等传统的版本控制系统采用的是“增量文件系统”,存储每次提交间的差异。

Git会把你每次提交的文件的全部内容(snapshot)都记录下来。

分享到:
评论

相关推荐

    Pro.Git-zh_CN.pdf

    对于那些希望深入理解Git内部工作原理的用户,手册中也许会包含对Git对象模型、引用日志(reflog)等深入话题的讨论。 《Pro Git》中文手册无疑是一个宝贵的资源,为那些希望掌握Git这一强大工具的用户提供了详尽的...

    Git-2.16.2-64-bit.exe下载

    - 分支管理:Git的分支模型非常灵活,使得并行开发变得简单,开发者可以自由地创建、切换和合并分支。 - 数据完整性:Git使用SHA-1哈希算法确保数据的完整性和一致性,每个对象都有唯一的标识,防止数据损坏或篡改。...

    Python库 | django-dbpreferences-0.3.4.git-c57b020.tar.gz

    2. **简便的API**:通过简单的API,可以在代码中轻松读取和更新设置值,无需复杂的数据库查询。 3. **可扩展性**:可以创建自定义的偏好类型,比如支持布尔值、整数、字符串甚至是其他复杂的对象。 4. **版本控制*...

    python_git-源码.rar

    4. Git 对象模型: Git 将文件的更改存储为四种基本对象:blob(文件内容)、tree(目录结构)、commit(提交信息)和 tag(标签)。在 Python Git 源码中,你会看到这些对象的类定义,以及如何通过它们进行数据的...

    git-graph:可视化Git数据模型

    该工具用于生成Git存储库的对象图。 它可以帮助Git学习者通过可视化更好地理解Git数据模型。 您可以尝试各种git操作(例如,添加/删除/编辑文件或目录,合并分支等),提交,然后运行此工具以查看引擎盖下.git目录中...

    【doc】 Git原理.pdf

    2. `objects`文件夹:存储Git对象,对象按照其SHA-1哈希值的前两位作为子目录,后38位作为文件名。此外,Git还会定期对这些对象进行压缩和打包,以节省磁盘空间,打包后的对象存储在`pack`子目录中。 3. `HEAD`文件...

    git-2.16.2

    1. **分布式特性**:Git的核心特性是其分布式模型。每个开发者的本地工作目录都包含整个项目的完整历史,无需依赖中央服务器进行日常操作。这种设计提高了效率,也使得离线工作成为可能。 2. **版本管理**:Git通过...

    emacs:git:git.savannah.gnu.orgemacs.git

    Git的强大力量在于它的分支模型,它鼓励频繁地创建分支,进行并行开发,然后再合并,以保持代码库的整洁和有序。 在"emacs-master"这个压缩包中,很可能是包含了Emacs项目的主分支(master分支)的最新代码。当解压...

    深入浅出Git

    以下将详细介绍Git的对象模型,这是Git的核心概念之一。 Git的核心设计理念是通过内容寻址存储来确保数据的完整性和可追溯性。它的对象模型由四个基本类型组成:blob、tree、commit和tag。 1. Blob对象:Blob对象...

    Pro Git 第二版 v2.1.17 中文版 非扫描 EPUB 和 PDF

    2. 分支管理:Git的分支模型是其强大之处,它允许开发者在不同的分支上独立工作,然后合并代码。书中会讲解如何创建、切换、合并分支,以及解决合并冲突的方法。 3. 远程仓库:Git不仅仅局限于本地操作,还可以与...

    zy699.git.io:个人博客

    如果zy699.git.io的博客系统使用了Rails,那么它的结构很可能是由模型管理数据,视图负责展示,而控制器则作为两者之间的桥梁,处理用户请求并协调数据的处理和显示。 在提供的压缩包文件名称列表中,我们看到"zy...

    git的详细使用教程.pdf

    2. **Git Flow**:这是一种常用的分支管理模型,定义了明确的工作流,包括master、develop、feature、release 和 hotfix 等不同类型的分支。这种方式有助于规范团队协作和版本控制。 3. **变基(Rebase)**:是一种...

    《ProGit》——Git使用和原理讲解

    - **对象数据库**:Git将文件内容和元数据存储为四个类型的对象:blob(文件内容)、tree(目录结构)、commit(提交信息)和tag(标签)。 - **分支模型**:Git的分支本质上是对提交历史的引用,切换分支时实际上...

    goole v8引擎编译集成

    3.对象模型:V8使用基于原型的对象模型,支持动态类型和属性,同时支持ES6引入的类和模块系统。 二、V8引擎的编译 1.获取源码:首先,你需要从V8的GitHub仓库克隆源码,通常使用`git clone ...

    go源码,git系统源码

    此外,还有树对象(tree)用于组织文件结构,提交对象(commit)记录版本历史,这三类对象构成了Git的核心数据模型。 2. 分布式特性: Git的分布式特性体现在每个工作副本都是一个完整的仓库,通过push/pull操作与...

    Git权威指南PDF完整版

    Git权威指南 目 录 前 言 第1篇 初识Git 第1章 版本控制的前世和今生/ 2 1.1 黑暗的史前时代/ 2 1.2 CVS—开启版本控制大爆发/ 5 1.3 SVN—集中式版本控制集大成者/ 7 ...34.1.2 Mac OS X 下 cvs2svn 的...

    SmbmsDemo_Git2.zip

    2. **SpringMVC**:作为Spring框架的一部分,SpringMVC是用于构建Web应用程序的模型-视图-控制器(MVC)架构。它将业务逻辑、数据和用户界面分离开来,使得开发更加灵活。在SmbmsDemo中,SpringMVC处理HTTP请求,将...

    开源项目-src-d-go-git.zip

    3. **数据分析**:对于需要分析git仓库历史数据的项目,go-git能够方便地获取和解析git对象,提取版本控制信息。 4. **插件开发**:如果你正在开发一个需要与git紧密集成的工具或服务,go-git可以作为你的基础库,...

    Git-2.22.0-64-bit (1).zip

    2. 强大的分支管理:Git的分支模型是其强大之处。可以轻松创建、合并分支,鼓励频繁的代码合并,便于多人协作和并行开发。 3. 高效的性能:Git的设计使得它在处理大量文件和历史记录时非常快速,这对于大型项目来说...

Global site tag (gtag.js) - Google Analytics