• Git原理及底层指令


    区域


    1. 工作区(本地代码)      沙箱环境,可以随便修改
    2. 暂存区                          积累了一定的操作,但还没决定提交
    3. 版本库                          提交更改以后的版本

    对象


    1. Git对象  

       Key:val     组成的键值对
                   键值对是blob类型

       **git对象是每个文件的映射**

    2. 树对象

       作用:能够解决文件名保存问题,也允许将多个文件组织到一起
       <br>
       
       构建树对象  
       通过**update-index**命令生成树对象
       命令:  
       git update-index -add -cacheinfo 100644  
       <br>
       100644, 普通文件
       100755, 可执行文件
       120000, 表示一个符号链接
       <br>
       -add选项:  
          因为此前该文件并不在暂存区中,首次需要-add
       -cacheinfo选项:
          因为将要添加的文件位于Git数据库中,而不是位于当前目录下,所以需要cacheinfo  
          
       **树对象是对每个项目的映射**
       <br>

    3. 提交对象

       **提交对象是每次提交的映射**  

    初始化工作区

    创建文件夹,初始化
          git init
          创建了.Git

       1. hooks    钩子,包含客户端或服务端的钩子脚本
       2. info     包含一个全局性的排除文件
       3. logs     保存日志信息
       4. **objects      目录存储所有数据内容**
       5. **refs      目录存储指向数据(分支)的提交对象的指针**
       6. config      文件包含项目特有的配置选项
       7. description    用来显示对仓库的描述信息
       8. **HEAD      文件只是目前被检出的分支**
       9. **index     文件保存暂存区信息**
     
     + 向数据库写入数据  并返回对应键值
       命令:     
             git hash -object -w -stdin  
       -w 选项指示  hash-object 命令**存储**数据对象;若不指定此选项,则改命令**仅**返回对应的**键值**  
       --stdin(standard input) 选项只是该命令从标准输入读取内容。若不指定,则需在尾部给出存储文件的内容

       + 查看Git如何存储数据
       命令:  
       find .git/objects -type f  
       一个文件对应一条内容。校验的前两个字符是路径名

       + 根据键值拉取数值
       命令:  
       git cat -file -p doqijwodjoqidjoqwiodoq
       -p 选项指示该命令自动判断内容的类型,并为我们显示格式友好的内容
       返回文件内容
       
  • 相关阅读:
    DS博客作业03--栈和队列
    DS博客作业02--线性表
    DS博客作业01--日期抽象数据类型设计与实现
    C语言博客作业06--结构体&文件
    DS博客作业08--课程总结
    DS博客作业07--查找
    DS博客作业06--图
    DS博客作业05--树
    DS博客大作业--树 (陈梓灿组)
    DS博客作业03--栈和队列
  • 原文地址:https://www.cnblogs.com/laoduancode/p/13253796.html
Copyright © 2020-2023  润新知