深入Git组件

深入Git组件


  1. 经过上一次的介绍,已经对git的几个组件比较了解了,
    接下来我们继续研究一下git的组件。

1.1 先创建一个文件夹,在文件中创建一个文件a.txt,
再在文件夹中创建一个文件,创建一个b.txt的文件 。

1.2 先使用命令git init 把这个文件变成一个
git的仓库,会生成一个.git的隐藏文件夹.使用命令
git status 查看状态,此时为Untracked状态

深入Git组件_第1张图片
14.png

在使用git status -s 查看

深入Git组件_第2张图片
15.png

前面有两个红色的问号,说明git现在还不知道这两个是
什么东西。

1.3 用命令git add .提交到暂存区,再次使用
git status -s查看

深入Git组件_第3张图片
16.png

两个都为绿色的A说明这两个文件已经完成添加了.
注意在问号的时候是文件夹不知道,当我们提交到暂存区
之后再查看的时候文件已经添加了,说明我们的blob
组件已经生成了,而blob所做的事就是存储内容。
所以说blob组件针对的是文件,而不是文件夹.

1.4 查看.git隐藏文件中的objects文件夹的目录会多出
两个文件。因为内容不一样所以生成了两个blob组件.

深入Git组件_第4张图片
17.png

1.5 使用git commit -m "xxx"之后再查看objects
文件夹

深入Git组件_第5张图片
18.png

多了三个文件夹,我们来研究一下这些文件.

使用git log 我们会看到一个commit组件
查看commit组件 (git cat-file -p *****),
我们会看到tree组件。此时现实有一个01和a.txt,
a.txt是blob组件,文件夹是tree组件。
所以我们每一个文件夹都会生成一个tree组件.
继续查看这个tree组件.里面就是b.txt的blob组件

深入Git组件_第6张图片
19.png

不管我们有多少文件夹,我们进行add之后都不会对文件夹进行处理
只会把文件夹的内容添加进去.那就是我们的blob组件.
当我们执行commit之后会把整个文件夹添加进去,一个文件夹
就是一个tree组件.

1.6 我们先对文件a.txt和b.txt进行修改.提交到暂存区,
commit之后,再来查看commit组件此时会有一个
parent组件.

深入Git组件_第7张图片
21.png

仔细观察会发现parent组件是我们上一次commit
提交的组件。
所以我们执行git reset --hard HEAD^^的时候,
其实就是找我们的parent组件

你可能感兴趣的:(深入Git组件)