首页 > 代码库 > Git Note

Git Note

.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 对象存储,其中:

  1. tree 对象对应于 UNIX 中的目录, 
  2. blob 对象则大致对应于 inodes 或文件内容。
  3. commit (提交) 对象,用于记录快照的的SHA-1值,提交者,何时提交,提交原因等信息
  4. Tag 对象非常像一个 commit 对象——包含一个标签,一组数据,一个消息和一个指针。最主要的区别就是 Tag 对象指向一个 commit (也可以是其他任何git对象)而不是一个 tree。它就像是一个分支引用,但是不会变化——永远指向同一个 commit,仅仅是提供一个更加友好的名字
一个单独的 tree 对象包含一条或多条 tree 记录,每一条记录含有一个指向 blob 或子 tree 对象的 SHA-1 指针,并附有该对象的权限模式 (mode)、类型和文件名信息

Git Note