.git目录中各个文件和目录的作用:
HEAD
指向当前分支,是一个指向你当前所在分支的引用标识符,这样的引用标识符——它看起来并不像一个普通的引用——其实并不包含 SHA-1 值,而是一个指向另外一个引用的指针
branches/
config包含了项目特有的配置选项
description
仅供 GitWeb 程序使用的描述信息
hooks/
保存了客户端或服务端钩子脚本
index
保存了暂存区域信息
info/
保存了一份不希望在 .gitignore 文件中管理的忽略模式 (ignored patterns) 的全局可执行文件
objects/
存储所有数据内容 refs/ 存储指向数据 (分支) 的提交对象的指针
/heads
保存指向分支的提交对象的指针,文件名为分支名,内容为某个提交对象的SHA-1值
/tags
像是一个分支引用,不会变化——永远指向同一个 commit,仅仅是提供一个更加友好的名字
/remotes
是标记这些分支在服务器上最后状态的一种书签
Git 以一种类似 UNIX 文件系统但更简单的方式来存储内容。所有内容以 tree 或 blob 对象存储,其中:一个单独的 tree 对象包含一条或多条 tree 记录,每一条记录含有一个指向 blob 或子 tree 对象的 SHA-1 指针,并附有该对象的权限模式 (mode)、类型和文件名信息
- tree 对象对应于 UNIX 中的目录,
- blob 对象则大致对应于 inodes 或文件内容。
- commit (提交) 对象,用于记录快照的的SHA-1值,提交者,何时提交,提交原因等信息
- Tag 对象非常像一个 commit 对象——包含一个标签,一组数据,一个消息和一个指针。最主要的区别就是 Tag 对象指向一个 commit (也可以是其他任何git对象)而不是一个 tree。它就像是一个分支引用,但是不会变化——永远指向同一个 commit,仅仅是提供一个更加友好的名字