使用git基本流程是
image.png
对三个区域使用git status命令,如果在工作区,那么该文件会显示红色,表示没有被git管理起来,在暂存区会显示绿色,表示被git管理,如下图(readme.txt)
image.png
对文件使用,add命令会产生一个blob对象,commit会产生一个commit对象。
而commit对象包含一个tree对象,而tree对象包含blob对象。一个commit可以代表整个文件。
image.png
Git的分支在refs文件夹下面,heads存的是本地分支,remotes存的是远程分支
image.png
image.png
而GIT是如何知道当前分支是哪个呢,就在,git目录 HEAD文件,指向的分支即为当前分支。
image.png
image.png
这个值是当前commit对象的hash值,即可指向当前文件。
调用git cat命令查看dec这个hash值得内容,里面保存的一个tree对象
image.png
而这个tree对象指向blob对象,这个blob对象内容即是文件的内容。
而GIT 的head就是指向当前的分支,即当前的commit(commit就代表当前的文件仓库),如果改变分支就是改变HEAD的指向的分支,分支一旦改变,分支指向的commit就改变,文件仓库就改变。