一些基本的Git概念

1.Git版本库

    Git版本库(repository)只是一个简单的数据库,其中包含所有用来维护和管理项目的修订版本和历史的信息,Git不仅提供版本库中所有文件的完整副本,还提供版本库本身的副本。

    在把一个版本库clone或复制到另一个版本库的时候,Git每个版本库的配置值如用户名和Email地址都会跟着一起转移。

    在版本库中,Git维护两个主要的数据库结构:对象库和索引。

1.1Git对象类型

    对象库是Git版本库实现的心脏,Git放在对象库里的对象只有4种类型:

①块(blob):文件的每一个版本表示一个blob。

②目录树(tree):一个目录树对象表示一层目录信息,Git通过目录树对象来追踪文件的路径名。

$ git write-tree    #捕获索引状态并把它保存到一个树对象里

$ git ls-files -s   #查看索引里的文件关联

#注意:具有相同目录树对象的SHA1值是完全相同的!

#以下说明目录树的用法:

#创建一个新目录,并添加到索引中:


#生成提交树,4a8b25...是此目录树对象的SHA1值


#此时,就可以通过目录树来把一些信息提交到版本库中了!当然,平时不用这么麻烦,只要用git commit即可!

#查看提交对象的信息

③提交(commit):一个提交(commit)对象保存版本库中每一次变化的元数据。

④标签:一个标签对象分配一个任意的且人类可读的名字给一个特定对象。

标签分为两类:

①轻量级的

只是提交对象的一个引用,这些标签并不在版本库里创建永久对象。 

②带附注的

GIT认为带附注的标签是“”永久的“对象。

#可以通过git tag 命令来创建一个带有提交信息、带附注且未签名的标签

$git tag -m "Tag version 1.0" V1.0 对象引用标签(40位那个)

#如下所示,利用git rev-parse 标签名可以查看标签对象的SHA1值。


1.2。索引

索引描述整个版本库的目录结构,它捕获项目在某个时刻的整体结构的一个版本。Git的关键特色之一在于它允许你用有条理的、定义好的步骤来改变索引的内容。所谓的索引就是你用git add file后添加到缓存的文件的一个版本,你可以通过GIT命令再索引中暂存变更(即添加、删除或者编辑某个文件或某些文件),索引会记录和保存好这些变更直到你准备好要git commit了。索引跟踪文件的路径名和相应的blob。

1.3Git追踪内容

首先要注意的是。Git追踪的是内容而不是文件,Git并不追踪那些与文件次相关的文件名或者是目录名。如果两个文件的内容完全一样,Git在对象库里只保存一份blob形式的内容副本,并且该文件具有唯一的SHA1值。文件内容改变,则Git会计算一个新的SHA1值,识别出它现在是一个不同的blob对象并把这个blob对象添加到对象库里。因为Git使用一个文件的全部内容散列值作为文件名,所有它必须对每个文件的完整副本进行操作。GIT用户所说的SHA1、散列码和对象ID都是指同一个东西。在互联网上,文件或者任意大小的blob都可以通过仅比较他们的SHA1标识符来判断是否相同。

1.4打包文件

Git并不是每次修改一个文件都会完全储存这两个版本文件的全部内容,而是采用一种叫做打包文件的储存机制。要创建一个打包文件,Git会定位内容非常相似的全部文件,为其中之一储存整个内容,然后计算相似文件之间的差异并只储存差异。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值