09 .git目录

打开某个已经配置git的项目,可在项目里面找个这个.git的文件夹,这里以BaseRecyclerViewAdapterHelper开源项目和我的demo项目为案例讲解:
09 .git目录_第1张图片
.git目录
09 .git目录_第2张图片

分析:
其中比较重要的几个是:refs、config、HEAD、objects

hooks:这个目录存放一些shell脚本,可以设置特定的git命令后触发相应的脚本;在搭建gitweb系统或其他git托管系统会经常用到hook script。

info:包含git仓库的一些信息

logs:可以说是commit提交的日志记录,里面有refs文件夹和HEAD文件。

09 .git目录_第3张图片



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目录下面有些文件夹或者目录没有,那是可能你这个项目还没有用到对应的命令,所以还没有生成出来。
09 .git目录_第4张图片
refs.png



config:信息配置文件,保存你的设置。比如远程URL,你的邮箱、用户名等。
每一次在控制端使用“git config”的设置,都记录在这个文件里面。

09 .git目录_第5张图片
config.png

description:仓库的描述信息

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

09 .git目录_第6张图片

index:暂存区(stage),是一个二进制文件

packed-refs:优化,周期性地运行垃圾回收将移除不必需要的对象,并将引用压缩至单个文件中,来提高性能。
https://segmentfault.com/a/1190000007996197

ORIG_HEAD:上个工作空间使用的分支。比方当前分支是dev,切换dev分支之前是使用master分支。(或者说是head指针上一次指引的节点位置)

COMMIT_EDITMSG:最近一次提交的信息记录





参考的资料:

  1. 苏玲-玩转Git三剑客
    https://my.oschina.net/wangyuzhan/blog/1619654?utm_medium=referral
    https://segmentfault.com/a/1190000007996197
    https://segmentfault.com/q/1010000016122016

你可能感兴趣的:(09 .git目录)