Young Kbt blog Young Kbt blog
首页
  • java基础

    • Java基础
    • Java集合
    • Java反射
    • JavaJUC
    • JavaJVM
  • Java容器

    • JavaWeb
  • Java版本新特性

    • Java新特性
  • SQL 数据库

    • MySQL
    • Oracle
  • NoSQL 数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • ActiveMQ
    • RabbitMQ
    • RocketMQ
    • Kafka
  • 进阶服务

    • Nginx
  • Spring
  • Spring Boot
  • Spring Security
  • 设计模式
  • 算法
  • 知识
  • 管理

    • Maven
    • Git
  • 部署

    • Linux
    • Docker
    • Jenkins
    • Kubernetes
  • 进阶

    • TypeScript
  • 框架

    • React
    • Vue2
    • Vue3
  • 轮子工具
  • 项目工程
  • 友情链接
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 收藏
    • 关于
    • Vue2-Admin (opens new window)
    • Vue3-Admin(完善) (opens new window)
GitHub (opens new window)

Shp Liu

朝圣的使徒,正在走向编程的至高殿堂!
首页
  • java基础

    • Java基础
    • Java集合
    • Java反射
    • JavaJUC
    • JavaJVM
  • Java容器

    • JavaWeb
  • Java版本新特性

    • Java新特性
  • SQL 数据库

    • MySQL
    • Oracle
  • NoSQL 数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • ActiveMQ
    • RabbitMQ
    • RocketMQ
    • Kafka
  • 进阶服务

    • Nginx
  • Spring
  • Spring Boot
  • Spring Security
  • 设计模式
  • 算法
  • 知识
  • 管理

    • Maven
    • Git
  • 部署

    • Linux
    • Docker
    • Jenkins
    • Kubernetes
  • 进阶

    • TypeScript
  • 框架

    • React
    • Vue2
    • Vue3
  • 轮子工具
  • 项目工程
  • 友情链接
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 收藏
    • 关于
    • Vue2-Admin (opens new window)
    • Vue3-Admin(完善) (opens new window)
GitHub (opens new window)
  • 版本管理 - Maven

  • 开发管理 - Git

    • Git - 介绍与安装
    • Git - 常用命令
    • Git - 基本原理
      • 哈希法
      • Git保存版本的机制
        • 集中式版本控制工具的文件管理机制
        • Git文件管理机制
        • Git文件管理机制细节
      • Git分支管理机制
        • 分支的创建
        • 分支的切换
    • Git - SSH免密登录
    • Git - IDEA集成
    • Git - 自建代码托管平台
    • Git - Commit常用表情
  • 操作系统 - Linux

  • 容器部署 - Docker

  • 持续集成 - Jenkins

  • 容器管理 - kubernetes

  • 工具
  • 开发管理 - Git
Young Kbt
2022-02-08
目录

Git - 基本原理

笔记

简单了解 Git 的基本原理和哈希算法。

2022-02-08 @Young Kbt

  • 哈希法
  • Git保存版本的机制
    • 集中式版本控制工具的文件管理机制
    • Git文件管理机制
    • Git文件管理机制细节
  • Git分支管理机制
    • 分支的创建
    • 分支的切换

# 哈希法

image-20220208210345146

哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:

  • 不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。

  • 哈希算法确定,输入数据确定,输出数据能够保证不变

  • 哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大

  • 哈希算法不可逆

Git 底层采用的是 SHA-1 算法。

哈希算法可以被用来验证文件。原理如下图所示:

image-20220208210440600

Git 就是靠这种机制来从根本上保证数据完整性的。

# Git保存版本的机制

# 集中式版本控制工具的文件管理机制

以文件变更列表的方式存储信息。这类系统将它们保存的信息看作是一组基本 文件和每个文件随时间逐步累积的差异。

image-20220208210531433

# Git文件管理机制

Git 把数据看作是小型文件系统的一组快照。每次提交更新时 Git 都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以 Git 的工作方式可以称之为快照流。

image-20220208210627089

# Git文件管理机制细节

Git 的「提交对象」(每个文件对应的 hash 值)

image-20220208210705167

提交对象及其父对象形成的链条

image-20220208210727373

# Git分支管理机制

# 分支的创建

新建一个指针

image-20220208210803173

# 分支的切换

HEAD 指向

image-20220208210813810

HEAD 指向 testing 时提交了内容

image-20220208210906444

切换回 master

image-20220208210915284

HEAD 指向 master 时 提交了数据

image-20220208210925287

编辑此页 (opens new window)
#Git
更新时间: 2023/10/23, 10:58:52
Git - 常用命令
Git - SSH免密登录

← Git - 常用命令 Git - SSH免密登录→

最近更新
01
技术随笔 - Element Plus 修改包名 原创
11-02
02
Reactor - 扩展性
11-02
03
Reactor - 最佳实践
11-02
更多文章>
Theme by Vdoing | Copyright © 2021-2024 Young Kbt | blog
桂ICP备2021009994号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式