zoukankan      html  css  js  c++  java
  • 4. git目录探秘

    HEAD当前指向的分支信息.
    cconfig,当前仓库的配置信息,core,用户,远程,分支等信息.(命令操作其实就是修改当前config文件)
    refs
    ---heads,其实就是分支,里面包含所有的分支文件,文件存储了分支指向的指纹信息
    ---tags 叫做里程碑,或者版本发布用等记录重要版本.文件也存储了tag的指纹信息
    ---remotes,远程仓库信息

    .git 文件目录

    • COMMIT_EDITMSG
    • config 当前 git 的配置文件
    • description (仓库的描述信息文件)
    • HEAD (指向当前所在的分支),例如当前在 develop 分支,实际指向地址是 refs/heads/develop
    • hooks [文件夹]
    • index
    • info [文件夹]
    • logs [文件夹]
    • objects [文件夹] (存放所有的 git 对象,对象哈希值前 2 位作为文件夹名称,后 38 位作为对象文件名, 可通过 git cat-file -p 命令,拼接文件夹名称+文件名查看)
    • ORIG_HEAD
    • refs [文件夹] 
    • heads (存放当前项目的所有分支)
    • tags (存放的当前项目的所有标签,又叫做里程碑)

    • cat 命令, 功能:用来显示文件。 例如 cat text.md 显示 text.md 文件的内容
    • ls -al 命令, 表示列出当前目录下的所有文件(包括隐藏文件)
    • git cat-file -t 命令 , 查看 git 对象的类型
    • git cat-file -p 命令, 查看 git 对象的内容
    • git cat-file -s 命令, 查看 git 对象的大小


    commit,tree,blob 之间的关系

    commit操作之后会产生一个tree,可以将这个tree理解为一个数据节点,文件夹就是一个tree,里面的文件就是blob

    可以通过一个测试加深理解

    首先初始化一个git目录

    $git init watch_git_object
    $mkdir doc
    $vim doc/readme 
    添加文件内容:hello world
    $git add doc/readme
    $git commit -m 'add readme'
    $find .git/objects -type f
    $atch_git_object git:(master) find .git/objects -type f
    .git/objects/9b/37366fef29725d58ba661075ba71b35c027354
    .git/objects/9c/391d35cd1790f182529f706d3a0bdf654d5718
    .git/objects/b5/78ef15afc72cd5136fc579c83a376a355f093c
    .git/objects/e4/9d8506c4cf1b78833b61ee7d5f88169ebc7a58
    

      

    通过git cat-file -t/-p 命令逐个查看每个git对象的类型和内容,可以整理出以下关系(下面的关系是向readme中添加新的内容后提交形成的新的数结构)。

  • 相关阅读:
    OneNote2007产品密钥及激活方法
    穿着马甲的编码方式链式
    String 转换NameValueCollection 的方法 , 这是原创 嘎嘎
    TransactionScope分布式事务无法使用时, 配置并启动 MSDTC 的解决方案
    Spirit越狱3.1.3/3.2固件(Windows)
    智能感知 不正常的解决方法
    HttpHandler HttpModule入门篇
    Microsoft.Practices.Unity依赖注入使用实例
    ViewEngine 深入解析与应用实例
    打开chm文件提示“已取消到该网页的导航”的解决方案
  • 原文地址:https://www.cnblogs.com/asea123/p/10238243.html
Copyright © 2011-2022 走看看