git的基本概念

基本git概念

git是对代码版本控制的工具,git维护两个数据结构对象库和索引。

1.对象库

git的对象库种有四种对象:

  1. blob 块对象:也是 binary large object 的缩写,一个文件对应一个快对象。在快对象中只存储文件的内容,而不存储文件的元数据如文件名和文件路径
  2. tree 树对象:树对象用来管理快对象,和文件的元数据。当然树对像也可以包含树对象。
  3. commit 提交对象:提交对象指向树对像,还包含了提交的作者和邮箱(这些在安装git时就设置了,存储在C盘种用户文件夹下的.gitconfig文件下),与提交的原因。
  4. tag 标签对象:标签对象指向一个提交对象,虽然每一个提交对象都会有一个SHA1值来指定如 a64837186d68e545ee5f96304 c816d93b276e643 但是没有标签 V1.0这样人性化。

只要是对象都可以通过git cat-file -p sha1值的前6位查看该对象的内容

2. 索引

索引包含了一个版本的所有目录结构,比如在向git中添加一份文件后会形成一个块对象和新的索引,包含了该文件的元数据,增删改查文件是不会立即提交到git版本库中的,只是暂存起来,git也会在索引里面暂存这些变更。然后用索引可以创建树对像。查看当前索引下的文件可以通过git ls-files -s命令。

3.案例

先在hello文件夹有文件hello.txt,初始化git,向git中添加hello.txt文件,然后通过索引创建树对象git write-tree

-hello
	hello.txt

然后将hello.txt复制一份到subdir文件夹下,将复制的hello.txt添加到git中,在通过索引创建树对像,提交新的树对像git commit-tree sha1值的前6位创建提交对象。

-hello
	hello.txt
	-subdir
		hello.txt

通过git tag -m "标签信息" 标签名 sha1值的前6位创建一个标签对象指向提交对象。

过程如图所示

git基本概念 (1)

最后对象的关系为:

未命名文件 (1)

blob对象

image-20210117193535182

树对象

image-20210117193749834

image-20210117193818246

提交对象

image-20210117193926907

标签对象

使用git tag -m "标签信息" V1.0 sha1值的前6位生成标签对象后可以使用git rev-parse V1.0查看标签对象的SHA1值,然后

git cat-file -p 8c7012查看对象内容。

image-20210117210615753

image-20210117194113795

4.总结

git init --初始化git
git add ./文件名 --添加文件
git write-tree --创建树对象
git commit-tree sha1前6位 --创建提交对象
git commit -m "提交原因" --前两个的功能
git tag -m "提交信息" 标签名 需要指向的提交对象的sha1值前6位 --创建标签对象
git ls-files -s --显示索引的所有文件
git cat-file -p sha1前6位 --查看对象的组成
git rev-parse sha1的前6位/标签名 --查看对象完整的sha1值
posted @ 2021-01-17 19:45  ${yogurt}  阅读(258)  评论(0编辑  收藏  举报