git相关概念
访问量:3425

在正式使用git之前,我们先来了解一下git相关概念,如暂存区、版本库、工作区、本地仓库、远程仓库、git对象,只有熟练掌握了概念,在使用中方可做到有的放矢。

一、工作区

工作区,即项目所在区域,也是我们项目,如代码、图片等资源所在的区域。比如我的项目所在文件夹是php,那么这个区域也是工作区,

二、版本库

上图中标注出来的,隐藏文件.git就是版本库,里面包含了暂存区、分支、本地仓库等。

三、暂存区

 暂存区,英文名称stage, 或index。主要用于快速判断工作区文件的变动。暂存区是怎么能判断工作区文件的变动呢?

四、git对象

git将每次提交都封装成一个commit对象,每次提交生成的目录树也封装成一个tree对象,都使用40位的16进制字符串表示,即SHA1的哈希值。比如我们可以通过如下命令来查看

git log -1 --pretty=raw

commit后面是当前提交的对象,tree后面代表当前提交生成的目录树对象,parent后面代表上一次提交的对象。

git提供了git cat-file命令来查看对象的类型,如下

当然,git cat-file命令来查看对象的内容,如下

从上图,通过目录树对象的内容,可以看出里面包含的文件,其实还有文件夹。文件对应的是一个blob对象,文件夹对应的是一个目录树tree对象。只是我还没有提交目录到版本库,下面我提交一个看看,如下图

当然,对于blob对象,我们也可以通过git cat-file来查看类型以及文件内容,如下

可以看出blob对象,里面的内容,其实就是我们工作区中相应文件的内容。

最终,commit对象,tree对象,Blob对象,形成了如下关系:

于是,通过每次提交对应,就可以查询该次提交后对应的所有文件内容。