工作区、版本库、暂存区、远程版本库
工作区: 也称为工作树,特定工程下的所有工作目录的集合,但不包括 .git
目录 。工作区中的文件就是我们当前正在开发的工程文件。
版本库: 隐藏的 .git
目录就是 Git 版本库。里面包含暂存区,对象库和所有的分支和提交等等。
暂存区: .git/index
是一个包含文件索引的目录树,像是一个虚拟的工作区。对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树将被更新。同时工作区修改(或新增)的文件内容会被写入到对象库中的一个新对象中。
远程版本库: 存储于服务器上的版本库。
commit 对象、tree 对象、blob 对象
所有的 Git 对象都有一个 SHA1 哈希值表示的唯一对象 ID
commit 对象: 就是我们通常所说的提交,记录了本次提交的父提交(上一次提交),以及本次提交的目录树,提交作者信息等等。
tree 对象: 就是我们通常所说的目录树,一个包含文件名和模式的列表的对象,以及对相关的 blob 和树对象的引用。树相当于一个目录。
blob 对象: 无类型对象,例如文件的内容。
head、HEAD、master、main、分支名
head: 分支顶端对提交的命名引用(即分支名)。head 存储在 .git/refs/ Heads/ 目录下的一个文件中。
HEAD: 当前分支。更详细地说:你的工作区通常是从 HEAD 引用的树的状态中提取出来的(切换分支时会改变工作区)。HEAD 是对存储库中的一个 head 的引用,除非使用分离的 HEAD,在这种情况下它直接引用任意提交。
master: 默认的开发分支。无论何时创建 Git 存储库,都会创建一个名为 “master” 的分支,并成为活动分支。这纯粹是惯例,并不是必需的,master 分支和其他任何普通分支完全一样。
main: 同 master ,自某漂亮国黑人事件之后,觉得 master 一词可能会有点冒犯,于是乎后续版本改名为 main 。
分支名: 即 head ,是对分支顶端的引用。