Git学习笔记(二)

小白一枚。学习笔记。仅供参考。欢迎指错。
二、基本的Git概念
Git版本库不仅保存库中所有文件的完整副本,而且保存版本库本身的副本。
Git维护的两个主要的数据结构 对象库(object store) 索引(index)

Git的对象类型
①块(blob)
binary large object的缩写,即二进制大对象。一个blob保存一个文件的数据,但不包含这个文件的元数据,设置连文件名都没有。
②目录树(tree)
一个目录树对象代表一层目录信息。它记录blob标识符 路径名 和在一个目录里的所有文件的一些元数据。
③提交(commit)
一个提交对象保存着版本库中的每一次变化的元数据,包括作者/提交者/提交日期和日志消息。每一个提交对象指向一个目录树对象。
④标签(tag)

索引
临时的、动态的二进制文件,它描述的是版本库的目录结构。更准确地说,索引捕获项目在某个时刻的整体结构的一个版本。项目的状态可以用一个提交和一棵目录树表示。

Git追踪的是内容,基于数据的散列值而不是文件名或者目录名。

底层的实现
mkdir jerry
cd jerry
git init
find .git/objects
这里写图片描述

echo “zxq” >> zxq
git add zxq
find .git/objects
这里写图片描述
git cat-file -p 98e7483d #查看对象id的内容
这里写图片描述
git rev-parse 98e7483d #查看完整的对象id

当使用git add后,Git会给添加的每个文件的内容创建一个对象,但不会立刻为树创建一个对象,却会立刻更新索引。 .git/index
git ls-files -s
这里写图片描述
git write-tree #捕获索引状态保存到数对象
这里写图片描述
git cat-file -p b9a79fd #查看树的内容
这里写图片描述

pwd
mkdir subdir
cp zxq subdir
git add subdir/zxq
git write-tree #捕获索引的状态保存到树对象
这里写图片描述
echo -n “commit a file” | git commit-tree 38946d
这里写图片描述
git status #发现未提交。??

git tag -m “Tag version 1.0” V1.0 3ed454d
git rev-parse V1.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值