3:Git对象

了解Git对象

Git 的核心部分是一个简单的键值对数据库。你可以向该数据库插入任意类型 的内容,它会返回一个键值,这个值就是根据你的内容得到的hash值,通过该键值可以在任意时刻再次检索该内容.
例如:
1echo "jane1" | git hash-object -w --stdin
这里的echo “jane1” 就是向控制台输出jane1,
| 的意思是执行另外的一个代码
git 是代表这个是git代码
hash-object 就是存储数据对象
-w 就是就是向Git仓库保存这个内容,文件名是用hash的前两个字母来新建一个文件夹,后面的hash值的字母用来做文件名,文件的内容就是要保存的内容,若没有写这个就只是返回hash值,不会向仓库里面写内容的
–stdin 指示该命令从标准输入读取内容; 若不指定此选项,则须在命令尾部给出待存储文件的路径:git hash-object -w 文件路径

2.find ./.git/objects -type f
这个命令就是看文件,就是到.git/objects 这个目录下面看看还有什么文件,有的话就在控制台里面显示出来
3.git cat-file -p 写上对应的hash值
-p 选项可指示该命令自动判断内容的类型,并为我们显示格式友好的内容
前面我们说过cat 文件的url 这样子也可以看文件的内容,但是这里的内容是被压缩过的,所以这样看就会出现乱码
将这里的-p改成-t就是看这个文件是什么对象,这里看的git存储的键值对是bold类型
在这里插入图片描述

如果我们对jane.txt文件进行修改,git仓库是完全不知道的,需要通过git hash-object -w 修改后的文件地址 这个命令将新修改的文件加进git仓库去,然后在仓库会新生成一个git键值对对象,这个新的对象完全保存了前面一个版本的内容,所以git保存的是完整的快照,而不是增量,例如下面的操作:
在这里插入图片描述
总结:Git对象就是用来存储内容的,它并不能代表一个项目的版本,Git的每一个版本只是文件的每一个版本,而且Git对象就遇到几个问题:
1.Git对象每一个版本都有一个hash值,要记住这个hash值有点困难,
2.Git对象中只是保存了文件内容,文件名没有被保存

发布了133 篇原创文章 · 获赞 37 · 访问量 4751

猜你喜欢

转载自blog.csdn.net/qq_43416157/article/details/104173917