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中添加新的内容后提交形成的新的数结构)。
最新文章
- iOS 开发:利用第三方插件来安装CoCoapods
- angular $http配置属性
- OCR识别-python版(一)
- 【转】IOS静态库a文件制作流程
- Scala中的If判断&;While&;For循环
- 面向对象设计模式之TemplateMethod模板方法(行为型)
- 乐在其中设计模式(C#) - 提供者模式(Provider Pattern)
- storm遇到问题汇总
- Java8 in action(1) 通过行为参数化传递代码--lambda代替策略模式
- 办公楼[POI2007]
- SVN提交文件的时候过滤指定文件
- 洛谷 P2590 [ZJOI2008]树的统计(树链剖分)
- dao层、service和action的运用和区别
- 一起学Hive——详解四种导入数据的方式
- Self-Introduce
- 跨平台设置NODE_ENV(兼容win和linux)
- 还有看不懂的java语句?
- 深入理解ajax系列第六篇——头部信息
- ZJOI2019day1退役记
- AOAPC I: Beginning Algorithm Contests -- Training Guide (Rujia Liu) Chapter 3. Data Structures Fundamental Data Structures