美文网首页
.git目录结构和数据保存形式

.git目录结构和数据保存形式

作者: 许宏川 | 来源:发表于2016-03-31 00:33 被阅读3272次

    这是看《Pro Git》底层原理的一点笔记。

    Git目录


    git init Test
    命令创建一个空的Git仓库,会自动生成一个.git隐藏文件夹。

    树形结构是这样的


    .git里面包含HEAD,config,description和branches、hooks、info、objects、refs五个文件夹。

    其中config是项目特有的Git配置文件,description但是GitWeb专用的文件。info文件夹是全局性排除文件,它和.gitignore是互补的。里面就一个exclude文件。


    hooks存放一些钩子脚本。
    HEAD记录当前被checkout的分支。
    objects存放所有数据。
    refs 提交对象的指针。

    这个文件结构是git初始化的样子,其实还会有别的文件,例如有个相当重要的index。它记录的是暂存区的信息。就被已经git add的内容。

    Git对象

    然后所有git数据都保存在objects目录下,以对象的形式保存。可以通过git hash-object命令来创建git数据对象。
    其中w参数是保存下来,否则只返回一个SHA-1校验和,并不会真的创建一个文件。
    stdin参数是从标准输入流读取内容,没有这个参数则需要另外指定内容来源。例如像
    git hash-object -w test.txt
    就没有stdin参数,就需要另外指定从text.txt读取内容。

    git根据数据对象的内容计算出40位的SHA-1,前两位作为子目录吗,后38位作为文件名。
    可以使用cat-file命令查看对象的内容和对象的类型。


    相关文章

      网友评论

          本文标题:.git目录结构和数据保存形式

          本文链接:https://www.haomeiwen.com/subject/vfqklttx.html