objects
Git的四种对象都在这里
接下来用 <b><font color="#c41230">git cat-file 命令来查看这个对象的内容</font></b>:<br> -t 表示查看这个对象的类型,<br><br>是一个commit类型的提交
git cat-file -p HEAD/唯一ID
git cat-file -t HEAD/唯一ID
-p 表示查看里面的内容<br><br>指向一个tree对象,指向一个parent对象(也就是前一次commit),以及commit的作者和提交者
查看所指向的tree的类型就是tree。。。废话
查看tree的内容<br>blob 对象就是我们的 ds和sd 文件
对一个 blob 对象,也可以用 git cat-file 对象加上 -p 参数来还原其中的内容
git会创建一个commit对象,并且将这个commit对象的parent指针设置为HEAD所指向的引用的Sha-1
每次提交存放的文件,二进制文件,gc之后全放到pack文件夹
refspec(refs目录)
默认,在git remote add的时候会自动生成,获取远端的refs/head下的所有引用,放到本地的refs/remote/origin目录下。
config里面配置的refspec,其实就是一个引用,说明去哪里获取数据<br>我们最终pull push写或者不写refspec其实都用的是这个文件夹指定的,只是git把我们简化的写法格式化了
refs 文件中还有三个文件夹,分别保存了:<br>heads存放分支的信息,<br>remotes 的一个远程就是一个文件夹,里面存放的是远程分支在本地的映射,<br>以及 tags 的信息<br>
上面的分支内容就是一个sha-1值,也就是某一个commit的id,<br>查看对应的内容就是一个commit
开发的时候,尽量每个功能都开一个分支,这样子在后续进行提交,回退,<br>做某些修改的时候,都会很方便,不用担心影响到其它工作分支<br><br>毕竟分支的代价就是40字节的指针
分支
tag
有注释的时候回生成一个tag对象,指向commitid
HEAD
这个文件保存的不是commitID(sha-1),而是指向某个提交的指针<br>放分支的 refs/heads 文件夹当中的某个分支<br>