zoukankan      html  css  js  c++  java
  • Git原理学习记录

    Git原理学习记录

    1.git init git-test

    image-20210127081614729

    git init 实际上就是在特定的目录下创建对应的目录和文件

    2.object

    $ echo "V1" > file.txt
    $ git hash-object -w file.txt
    998a6f80eb9feed5d5a7b2b56c41e91961807a52 
    //将file.txt的内容以一个object的形式添加进object数据库中,该hash值对应着这个object
    
    $ find .git/objects/ -type f #type用于制定类型,f表示文件
    .git/objects/99/8a6f80eb9feed5d5a7b2b56c41e91961807a52
    在object 下多出一个99文件夹,git以Hash前两个字符作为目录名,后38作为文件名,存在object数据库中。
    $ git cat-file -p 998a
    V1
    $ git cat-file -t 998a
    blob
    #blob是一种存放二进制文件的容器,是数据库中用来存储二进制文件的字段类型
    
    
    #更新文件
    $ cat "v2" > file.txt
    $ git hash-object -w file.txt
    beef424daef9c4eeedd52f6b12d46ee7e0fcf1da
    $ find .git/objects -type f
    

    image-20210127085040475

    #恢复版本
    

    image-20210127085232169

    可以看出,Git的版本控制就是将每个版本文件都保存到一个object数据库中,如果想要恢复上个版本,git cat-file -p 998a > file.txt即可恢复。

    #注意
    1.为什么不直接cat查看数据库内容,而是编写git cat-file
       因为git不能将文件内容直接保存进object,而是进行了压缩,所以无法直接查看.
    2.一个object的存储内容:
    

    image-20210127085802709

    git cat-file刚好相反,先把object文件中存放的数据用zlib进行解压,根据空格和空字节对解压后的数据进行划分,根据参数-t或-p返回object的内容或类型

    转载请标明,谢谢
  • 相关阅读:
    树与树的表示
    队列的顺序/链式存储实现
    堆栈的链式存储实现
    堆栈的顺序存储实现
    线性表的链式存储求表长,查找,插入,删除
    C语言博客作业--函数
    C语言博客作业--嵌套循环
    C语言第三次博客作业---单层循环结构
    C语言第二次博客作业---分支结构
    C语言第一次博客作业——输入输出格式
  • 原文地址:https://www.cnblogs.com/guapilsh/p/14439941.html
Copyright © 2011-2022 走看看