Git暂存区
在Git里想要加入到Git版本库里就必须先用git add
命令把工作区(working directory)里的目录加入到暂存区里。然后在 git commit
把文件永久提交到本库中(repository)。工作区目录下的.git/index
文件就是暂存区,
tips:可以使用 git ls-files -s
查看暂存区的文件
tips:可以使用 git commit -a
跨过暂存区提交,但是不推荐!
上图中使用git add
把工作区的目录添加到.git/index
文件里,工作区里的目录和.git/index
目录相对应,而.git/index
里面指存储着每一个文件的索引(这个索引是一个40位的SHA-1 校验和,前两位表示在.git/objects
下面的子目录名,后38位是文件的名称),时间戳,文件长度等信息。文件具体的内容存储在.git/objects
文件下(内容是二进制的)。
图中使用git commit
之后会生成一个commit对象,然后当前分支(图中的是master分支)会指向这个commit对象(指向的是这个commit的SHA-1校验和)。而图中的HEAD则是负责分支的指向,也就是说HEAD现在指向的分支就是你所处的分支。
tips:工作区下面的.git/refs/heads/
目录里面的文件就是你整个仓库的分支(一个分支对应一个文件)。 文件的内容就是分支所指向的commit对象的SHA-1校验和。而.git/HEAD
文件里面的内容就是你当前所处在分支所对应文件的路径!
参考
《Pro Git》
《Git权威指南》