

分析:
其中比较重要的几个是:refs、config、HEAD、objects
hooks:这个目录存放一些shell脚本,可以设置特定的git命令后触发相应的脚本;在搭建gitweb系统或其他git托管系统会经常用到hook script。
info:包含git仓库的一些信息
logs:可以说是commit提交的日志记录,里面有refs文件夹和HEAD文件。

objects:每次文件的增删改都有记录,就是这个objects里面处理的,具体情看。
https://segmentfault.com/q/1010000016122016
refs:分支的管理。本地的分支,远程的分支,分支的暂时备份等。
它里面包含的一些文件:
heads文件夹:它里面存储的是一系列的本地分支的对象,每个对象的文件名就是本地的一个分支名,使用git branch查看本地分支命令时,查询出的所有本地分支就是取的heads文件夹下所有文件的名称。
stash文件存储的是所有你使用git stash命令暂存的记录,是一个列表。使用git stash list时,查询出的列表就是从stash中取出来的。
remotes文件夹里存储的是远端的一系列分支的对象,每个对象的文件名称就是远端的一个分支名称,使用git branch -a查看远端分支命令时,查询出的所有本地分支就是取的remotes文件夹下所有文件的名称。
tags:对某一时间点上的版本打上标签,具体请去了解git tag命令。
refs文件夹里面暂时知道有这些,如果还有其他的,就请大家帮忙完善了。当你查看你的refs目录下面有些文件夹或者目录没有,那是可能你这个项目还没有用到对应的命令,所以还没有生成出来。
config:信息配置文件,保存你的设置。比如远程URL,你的邮箱、用户名等。
每一次在控制端使用“git config”的设置,都记录在这个文件里面。

description:仓库的描述信息
HEAD:记录你当前工作使用的是哪个分支。也可以说是指向了refs目录下的heads文件夹,里面包含着当前项目本地的一些分支。


index:暂存区(stage),是一个二进制文件
packed-refs:优化,周期性地运行垃圾回收将移除不必需要的对象,并将引用压缩至单个文件中,来提高性能。
https://segmentfault.com/a/1190000007996197
ORIG_HEAD:上个工作空间使用的分支。比方当前分支是dev,切换dev分支之前是使用master分支。(或者说是head指针上一次指引的节点位置)
COMMIT_EDITMSG:最近一次提交的信息记录
参考的资料:
网友评论