深入Git组件
- 经过上一次的介绍,已经对git的几个组件比较了解了,
接下来我们继续研究一下git的组件。
1.1 先创建一个文件夹,在文件中创建一个文件a.txt,
再在文件夹中创建一个文件,创建一个b.txt的文件 。
1.2 先使用命令git init 把这个文件变成一个
git的仓库,会生成一个.git的隐藏文件夹.使用命令
git status 查看状态,此时为Untracked状态
在使用git status -s 查看
前面有两个红色的问号,说明git现在还不知道这两个是
什么东西。
1.3 用命令git add .提交到暂存区,再次使用
git status -s查看
两个都为绿色的A说明这两个文件已经完成添加了.
注意在问号的时候是文件夹不知道,当我们提交到暂存区
之后再查看的时候文件已经添加了,说明我们的blob
组件已经生成了,而blob所做的事就是存储内容。
所以说blob组件针对的是文件,而不是文件夹.
1.4 查看.git隐藏文件中的objects文件夹的目录会多出
两个文件。因为内容不一样所以生成了两个blob组件.
1.5 使用git commit -m "xxx"之后再查看objects
文件夹
多了三个文件夹,我们来研究一下这些文件.
使用git log 我们会看到一个commit组件
查看commit组件 (git cat-file -p *****),
我们会看到tree组件。此时现实有一个01和a.txt,
a.txt是blob组件,文件夹是tree组件。
所以我们每一个文件夹都会生成一个tree组件.
继续查看这个tree组件.里面就是b.txt的blob组件
不管我们有多少文件夹,我们进行add之后都不会对文件夹进行处理
只会把文件夹的内容添加进去.那就是我们的blob组件.
当我们执行commit之后会把整个文件夹添加进去,一个文件夹
就是一个tree组件.
1.6 我们先对文件a.txt和b.txt进行修改.提交到暂存区,
commit之后,再来查看commit组件此时会有一个
parent组件.
仔细观察会发现parent组件是我们上一次commit
提交的组件。
所以我们执行git reset --hard HEAD^^的时候,
其实就是找我们的parent组件