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中添加新的内容后提交形成的新的数结构)。

4. git目录探秘的更多相关文章

  1. 探索.git目录

    .git目录 下面就开始进入.git目录,通过“ls”命令可以看到.git目录中的文件和子目录: 对于这些文件和目录,下面给出了一些基本的描述. hooks:这个目录存放一些shell脚本,可以设置特 ...

  2. Git Step by Step – (4) 探索.git目录

    前面一篇文章介绍了Git对象模型,接下来我们就进入".git"目录看看到底有什么东西,目录中哪些东西又跟Git对象模型相关.结合这个目录,我们将进一步了解Git的工作原理. .gi ...

  3. 【Git】将项目下的.git目录隐藏

    将项目下的.git目录隐藏 在apache配置文件httpd.conf中添加配置: <Directory "${INSTALL_DIR}/www/mypro/.git"> ...

  4. 在centos搭建git服务器时,不小心把/home/git目录删除了,我是怎么恢复的

    在centos搭建git服务器时,不小心把/home/git目录删除了,我是怎么恢复的 在删除掉/home/git目录后,每次 git push提交时,都让填写密码,烦 第一步:在本地找到id_rsa ...

  5. Mac上如果看不到.git目录的解决方法

    Mac OS X上,如果需要查看.git目录下的隐藏文件,操作很简单: 做法是:打开一个Terminal终端窗口,输入: defaults write com.apple.finder AppleSh ...

  6. 深入理解git,从研究git目录开始

    转发学习的啦. 似乎很少有人在读某个git快速教程的时候会说:“这个关于git的快速教程太酷了!读完了用起git来超级舒服,并且我一点也不怕自己会破坏什么东西.” 对git的初学者来说,刚接触git时 ...

  7. .git 目录文件介绍

    $>tree -L 1.|-- HEAD         # 这个git项目当前处在哪个分支里|-- config       # 项目的配置信息,git config命令会改动它|-- des ...

  8. Git——简说.git目录【五】

    我们都知道初始化项目时,会生成一个.git的隐藏目录,那么这个目录究竟放了那些东西呢,又有什么作用呢?现在我们就来看看. HEAD HEAD指向的是当前工作所在的分支 $ cat HEAD ref: ...

  9. [转发]深入理解git,从研究git目录开始

    转发学习的啦. 似乎很少有人在读某个git快速教程的时候会说:“这个关于git的快速教程太酷了!读完了用起git来超级舒服,并且我一点也不怕自己会破坏什么东西.” 对git的初学者来说,刚接触git时 ...

随机推荐

  1. 盘姬工具箱WV1.10

    ========================================================================== {盘姬工具箱CruiserEXPforWin版是一 ...

  2. STL语句表跳转指令学习

    打开语句表程序状态监控 发现 被跳过的指令用普通字体显示 被执行的指令用加粗的字体表示 录制成视频 如果除数是0 发生了溢出 用 JUO 跳转指令,跳转到 M001 例程已经录制成视频 上传到百度网盘 ...

  3. 完整版excel上传导入读写批量数据并将反馈结果写入远程exel中

    思路:excel的读写借助于poi框架,在写入远程的时候,是不能直接写入的,本博主将传入的文件再次拉下来写到项目临时文件中,然后,在临时文件中写入,然后,以同样的名称路径覆盖掉远程的就可以了,稍微有点 ...

  4. SSM整合搭建过程中的一个怪异问题

    好久没有搭建框架了,昨天开始试图搭建一个SSM框架,各种配置文件搭建成功,服务器也启动正确,但是在运行过程中,发现总是不能获取JDBC,不能够创建连接池工厂,报错如下:网页报500错误码 SEVERE ...

  5. s5pc100开发板Nand flash移植

    相关软件下载地址:http://pan.baidu.com/s/16yo8Y fsc100开发板 交叉编译工具:arm-cortex_a8-linux-gnueabi-gcc Ÿ   添加针对我们平台 ...

  6. Oracle 查询当前用户下的所有表

    select table_name from user_tables;

  7. 《新标准C++程序设计》3.9-3.10(C++学习笔记11)

    一.C++程序到C程序的翻译 程序示例分析: C++: class CCar { public: int price; void SetPrice (int p); }; void CCar::Set ...

  8. Web.config中executionTimeout的单位

    executionTimeout:表示允许执行请求的最大时间限制,单位为秒

  9. ServletContext 详解

    ServletContext——它是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放.request,一个用户可有多个:session,一个用户一个:而servletContext ...

  10. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-font

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...