.git文件夹位置及内容
.git文件夹一般位于项目根目录下,内容可以参考下图,一般包含hooks、info、logs、objects、refs等目录,包含config、HEAD、index等文件;

这些文件夹和文件的含义可以使用以下命令查看官方说明
git help gitrepository-layout
HEAD
指向当前正在工作的分支,是通过ref指向的一个引用, 比如当前分支为test分支,执行以下命令
cat HEAD
可以看到输出 ref: refs/heads/test
config
保存了本地仓库的配置信息

refs
表示一系列的引用,baocun包含heads、remote、tags等目录;
heads:表示一系列的本地分支remote:远程仓库分支tags:tag标签
cat master
// output: e7aa6943307fc69e54fa59637739612459d6f3fc
git cat-file -t e7aa6943307fc69e // 查看类型
// output: commit
cat feature/webgl
// output: 9a0a682b5a640b6fa8ce38058683693ae9d19b80

tag
这里补充介绍下tag——tag可以给某个历史提交打上标签,标识某些重要节点,一般如标记发布节点等;
git tag查询当前所有
tag
git支持轻量标签(lightweight)和附注标签(annotated),前者只是某个特定提交的引用,因此查看
.git/ref/tag目录下的内容时是一个关联的commit(git tag v0.1);附注标签是存储在git仓库的一个commit类型的完整对象,包括了打tag者的邮箱、姓名、日期等信息,同时包含一个附注信息(git tag -a v0.0 -m 'annotated tag)
objects
是git文件系统组织的核心;目录组成包括两位十六进制数组成的一系列文件夹加上info与pack文件夹;git中比较重要的几种对象:tree' 、commit、blob

git cat-file -t 00021d0828028cc76eecbf1bc7 // 文件夹名拼接文件名前几位获取类型,为tree
// output: tree
git cat-file -p 00021d0828028cc76eecbf1bc7 // 获取指向内容,为blob二进制文件
// 100644 blob 9506eaca8e65cbdb1f688fba849ed3287c845cea create.js
// 100644 blob 3c7963c4304dd3fd54495f7847e269de5dc2f022 index.js
// 100644 blob 008f5d69cd91d52225c79f82761f2a1d52dfab4c remove.js
// 100644 blob 524cacb9c42cd9138cfdc0e8f934cc983146ff50 resize.js
// xxx blob 文件hash 文件名
git cat-file -p 3c7963c4304dd // 可以进一步查看具体的文件内容
2418

被折叠的 条评论
为什么被折叠?



