打开一个项目的.git文件如下:
1. hooks:这个目录存放一些shell脚本,钩子函数。
2. info:包含git仓库的一些信息
3. logs:保存所有更新的引用记录。打开logs文件夹可以看到其中有两个文件,refs文件夹和HEAD文件。
3.1 refs文件夹中有两个文件夹:
3.1.1 heads文件里面存储的是本地分支指向的commit对象,每个对象的文件名就是本地的一个分支名。我们使用git branch查看本地所有分支时,查询出的分支就是heads文件夹下所有文件的名称
这些分支文件中存储的是对应分支下的操作记录
3.1.2 remotes文件夹里存储的是远程的所有分支对象,每个对象的文件名称就是远程的一个分支名称。这些分支文件中保存了远程仓库对应分支所有操作
3.2 logs下的HEAD文件保存的是所有的操作记录,使用git reflog查询的结果就是从这个文件来的。HEAD文件内容如下:
使用git reflog命令查看操作记录。
4.objects文件夹:存放所有的 git 对象,哈希值一共40位,前 2 位作为文件夹名称,后 38 位作为对象文件名。
5.refs:顾名思义就是引用,refs下有三个文件夹。
5.1 heads:里面包含所有的本地分支,每个分支都是文件,文件中存储了分支当前指向的commit对象的commit id
5.2 tags 叫做里程碑或者标签,或者版本发布用等记录重要版本。
5.3 remotes 远程仓库信息
\refs\remotes\origin\HEAD:指向远程仓库当前分支。
\refs\remotes\origin\master:远程分支当前指向的commit
6.COMMIT_EDITMSG:保存着最近一次的提交信息,Git系统不会用到这个文件,只是给用户一个参考。
7.config:保存当前仓库的配置信息。
8.description:仓库的描述信息。
9.HEAD文件:这就是我们常说的HEAD指针,它指向了当前分支。打开后如下:
10.index:暂存区(stage),是一个二进制文件。