Git内幕原理

 

Git内幕研究的一个思路

git add,git commit,git push,这些命令背后在干什么?git内幕原理
不是纯讲,要在动手实践中,去给大家讲请清楚这些命令背后的原理是什么?
porcelain命令,这些命令,指的就是类似git add,日常开发中,程序员会直接使用的git命令
这些porcelain命令底层都是调用的一些git的底层命令,plumbing命令,实际上是不是给我们用的,是给git的那些高阶命令去用的
我们在这里讲解git add这些高阶命令背后的原来,是带着大家动手实践去体验一下底层的命令是用来干嘛的,当你把那些对应的底层命令都学会之后,明白那些底层命令在干什么,接着你就会瞬间明白,git add,git commit这些高阶命令,你在执行的时候,他们背后在干什么 => 内幕原理,你就全部清楚了

.git目录研究

平时我们如果执行git init之后,就会生成一个.git目录,其中就是git存放所有数据的地方。如果我们拷贝这个.git目录,那么就相当于备份了一个完整的git项目的数据。
在.git目录中,有如下一些内容:
config description HEAD hooks/ info/ objects/ refs/
description文件仅仅是由Git WebUI程序去使用的,我们一般不用去管这个文件
config文件包含了这个git项目的所有配置项
info目录中包含了我们在.gitignore文件中定义的不需要git追踪的那些被排除掉的文件
hooks目录中包含了我们的client-side或者是server-side的钩子脚本
其实上面那些都不是最重要的,最重要的是这几个东西:HEAD文件,indexes文件,objects目录,以及refs目录。
objects目录存储了git中所有的数据,refs目录中存储了所有的指针(包括了branch,tag,remote,等等,指向了objects目录中的数据),HEAD指向了当前我们所处的分支指针,indexes文件存储了暂存区中的内容。

git数据存储机制

git数据存储机制

Git指针内幕原理

Git指针内幕原理
 

GIt文件合并内幕原理

GIt文件合并内幕原理

远程分支内幕原理

远程分支内幕原理