.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 // 可以进一步查看具体的文件内容