git基本概念

xiaoxiao2021-02-27  232

git 分布式版本控制系统 目的:管理文件内容的变化

一、优点:

 1.分布式开发    并行开发,每个人在自己独立的版本库中同时开发,不需要与中心版本库时刻同步   2.性能优异    为了节约传输时间和存放空间,使用“压缩”和“差异比较”技术;分布式开发也确保了网络的不确定不会影响日常开发  3.保持完整性和可靠性    使用安全散列函数SHA1来命名和识别对象库中对象

二、概念解释:

(1) 版本库   是一个简单的数据库,包含用户用来维护与管理项目的修改版本和历史信息。提供所有版本库中文件的副本,和版本库本身的副本    Git主要数据结构:对象库和索引 (2)对象库   又称内容寻址系统,只有四种类型:    块(blob:binary large object):文件的每一个版本都表示一块blob,只有文件的内容,不含元数据   目录树(tree):记录blob标识符、路径名和一个目录所有文件的元数据   提交(commit):保存版本库中每一次变化的元数据,包括作者、提交者、提交日期和日志信息   标签(tag):方便人读的特定对象,通常是一个提交对象。分为轻量级(提交对象的引用)和带附注(在版本库中创建永久对象) (3)索引   一个临时的、动态的二进制文件,描述整个版本的目录结构

三、对象库具体变化

(树对象即目录树) (1)一个文件从添加到提交的过程

git init echo "hello" > hello.txt git add . //对象库中创建blob对象 git write-tree //根据当前的索引在对象库中创建一个树对象 git commit -m 'add hello' //对象库中创建树对象和提交对象

标签

带附注的标签 git tag -m 'tag version 1.0' v1.0 提交对象ID //对象库中创建标签对象 $ git rev-parse v1.0 //获取标签对象的散列值SHA1 5edaf4b2307afad2702e8d6375cedc6ad1c68235 //标签对象ID git cat-file -p v1.0 //查看标签对象的内容 轻量级标签 git tag v2.0 884ff6294901aefe0b80638292a236e48a783a52 //对象库中没变化 git rev-parse v2.0 884ff6294901aefe0b80638292a236e48a783a52 //提交对象ID

查看hello.txt提交后的仓库变化

$ find .git/objects/ .git/objects/ .git/objects/5e .git/objects/5e/daf4b2307afad2702e8d6375cedc6ad1c68235 //标签对象 .git/objects/88 .git/objects/88/4ff6294901aefe0b80638292a236e48a783a52 //提交对象 .git/objects/aa .git/objects/aa/a96ced2d9a1c8e72c56b253a0e2fe78393feb7 //树对象 .git/objects/ce .git/objects/ce/013625030ba8dba906f756967f9e9ca394464a //hello.txt的blob对象 .git/objects/info .git/objects/pack

查看ID对应的内容:

以树对象为例 git cat-file -p aaa96ced2d9a1c8e72c56b253a0e2fe78393feb7 100644 blob ce013625030ba8dba906f756967f9e9ca394464a hello.txt

具体对象库中变化如图所示:     

(2)在添加一个目录和一个文件

mkdir test echo "what" > test/test.txt git add . git commit -m "add test"

提交后对象库中新增一个提交对象、两个树对象、一个blob对象。 具体变化如图所示:    

注意:Git追踪的是内容,不是文件

当在cp hello.txt test/hello.txt时,不会创建新的blob块,只有当其中一个内容变化时才新建blob块

主要命令

git cat-file -p ID //查看ID对应的信息(不同对象对应不同内容) git rev-parse 3211882d //根据唯一前缀查看完整的散列值 git ls-files -s //查看当前索引 git write-tree //根据当前索引创建树对象 git rev-parse v1.0 //根据标签名查看标签队形散列值
转载请注明原文地址: https://www.6miu.com/read-6086.html

最新回复(0)