想使用Git,必须理解它的一些基本概念
提交(commit)#
每次commit之后都会生成一个提交,提交的数据结构如下(只是把关键的属性列出来了)
id: SHA1生成的唯一值
parent:父提交的id
message:提交时的信息
tree: 索引树,理解一个目录,用来从.git/object中查找文件的对象
author: 作者
工作区(working)
物理上可以理解为工作目录中除.git目录的所有文件。逻辑上可以理解为正在编辑的区域
暂存区(stage)
介于工作区到版本库之间,git add filename
就是把工作区的修改加到暂存区里,git commit
就是把暂存区的修改提交到分支中。目前还不是很理解这种设计是为什么,还需要继续学习。
分支(branch)
commit其实是链表里一个节点,分支可以理解为永远指向这个链表的最后一个commit。
HEAD
知道了分支,那么HEAD就是指向指针的指针,HEAD可以指向任意的commit