.git 目录的内容
.git 目录包含了多个子目录和文件,以下是其中一些重要的组成部分:
.git/
├── HEAD
├── branches/
│ └── master
├── config
├── description
├── FETCH_HEAD
├── hooks/
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── fsmonitor-watchman.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── pre-push.sample
│ ├── prepare-commit-msg.sample
│ └── update.sample
├── info/
│ └── excludes
├── logs/
│ ├── HEAD
│ ├── refs/
│ │ └── heads/
│ │ └── master
├── objects/
│ ├── info/
│ │ └── packs
│ └── pack/
│ └── pack-1234567890123456789012345678901234567890.pack
└── refs/
├── heads/
│ └── master
└── tags/
HEAD:
指向当前分支的指针。它通常指向一个分支名称或直接指向一个提交的 SHA-1 哈希值。
branches:
存储了每个分支的最新提交的 SHA-1 哈希值。
refs:
包含了 heads 和 tags 子目录,用于存储分支和标签的引用。
objects:
存储了 Git 对象的实际数据,包括树对象、提交对象、标签对象和 blob 对象。这些对象被压缩并存储在这个目录中。
logs:
包含了各种日志文件,记录了 Git 内部的一些操作历史。
hooks:
包含了一系列脚本钩子文件,这些脚本可以在 Git 的某些动作前后自动执行。
info:
包含了一些信息文件,如 excludes 文件,用于指定 Git 忽略的文件模式。
packed-refs:
如果启用了 packed-refs 功能,此文件将包含分支和标签的引用,以节省磁盘空间。
shallow:
如果项目是浅克隆的,此文件将包含项目的深度信息。
config:
包含了 Git 仓库的配置信息,如远程仓库的位置、别名等。
description:
一个文本文件,通常包含仓库的简短描述。
FETCH_HEAD:
记录了最近一次从远程仓库获取的提交信息。
ORIG_HEAD:
记录了最后一次提交前的 HEAD 的状态,通常用于 git revert。
COMMIT_EDITMSG:
临时文件,用于保存正在编辑的提交消息。
MERGE_HEAD:
用于记录合并中的提交信息。