概要
本文主要讲解git底层原理及常用使用
整体架构流程
git底层原理
git是一个分布式文件管理系统,其数据内容都存储在.git/objects文件夹下,底层数据存储结构类似于一个hashmap,其中value为我们需要存储的数据,key为value经过算法生成的hash值,git存储的数据对象分为三种类型
-
数据对象
存储真实的数据内容
-
树对象
包含数据对象和树对象,类似文件夹和文件的关系
-
commit对象
每次执行commit命令,都会生成一个commit对象
git的三种数据对象生成后都不可修改,如果修改会生成新的对象,原始对象是不可变的,下图描述了git数据存储结构,列举了两次commit,git数据结构变化,git每次commit都会生成一个commit对象,该对象是git仓库镜像的入口引用,里边包含我们需要的所有数据内容
git branch、tag、commit对象 关系
通过上边介绍,我们了解到每个commit对象都是git仓库的一个镜像(其实是一个镜像入口地址),我们工作中常用的分支和tag其实就是对应的一个commit对象,如下图所示,左边是分支名称,右边是commit对象的key,tag也是相同的逻辑
通过上边的讲解,我们理解了分支、tag和commit的关系,在git中还有一个HEAD头指针的概念,它指向当前工作区对应的commit对象,每次提交HEAD都会移动到新生成的commit对象,我们可以通过移动头指针达到改变工作区内容的目的,通过reset、checkout 等命令可以灵活移动头指针
常用命令
https://worktile.com/kb/ask/20275.html