.git目录探析

.git文件夹位置及内容

.git文件夹一般位于项目根目录下,内容可以参考下图,一般包含hooksinfologsobjectsrefs等目录,包含configHEADindex等文件;
在这里插入图片描述

这些文件夹和文件的含义可以使用以下命令查看官方说明

	git help gitrepository-layout
HEAD

指向当前正在工作的分支,是通过ref指向的一个引用, 比如当前分支为test分支,执行以下命令

cat HEAD

可以看到输出 ref: refs/heads/test

config

保存了本地仓库的配置信息
在这里插入图片描述

refs

表示一系列的引用,baocun包含headsremotetags等目录;

  • 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文件系统组织的核心;目录组成包括两位十六进制数组成的一系列文件夹加上infopack文件夹;git中比较重要的几种对象:tree'commitblob

在这里插入图片描述

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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Neil-

你们的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值