Git原理深刻理解git add和git commit命令。
(1) git存储库(版本存储库):git存储库是一个. git文件夹。这个文件夹包含许多文件(见图2),包括一个重要的文件夹对象,它在临时存储区存储所有文件对象,包括blob对象、tree对象、commit对象等。这些对象都以文件的形式保存。还有头文件,它保存了最新提交的指针。当然,这里很多人可能还不明白objects中的file对象和HEAD中保存的指针到底是什么意思。没关系,下面会详细解释。
(2)工作空间:在一个项目目录中,除。git文件是工作空间。
(3) Staging area: Staging area可以理解为文件修改和最终提交git版本库之间的缓存。为了防止不必要的文件一次提交并且有回滚的空间,有一个staging area。
(4)头:头是文件中的。git文件夹。文件的内容是一个32位16的十六进制数,只是一个指针。这个提交点实际上是一个提交对象,包含了很多属性,包括最后一个提交点的目录结构索引,最后一个提交点的id,提交人,提交时间。
(1)首先,按照我的思路,我们来创建一个git仓库,通过一个例子来理解git add命令。
1.首先我们通过git init创建一个仓库,然后会生成一个. git文件夹,这是一个git仓库。
2.创建一个A.java文件。
处决吉泰德·A.java。
中的对象文件。git,发现多了一个文件夹。打开它,有一个文件,里面有一串符号。打开这个文件,里面有一串无法识别的字符。
git add做了什么?
实际上,在执行git add命令时,git会先通过hash函数计算出文件名A.java对应的sha-1值为1 fed 2 a 34 f 13 D2 a 34 f 13d,这个代码是一个32位的16十六进制数。Git将把这个代码的前两位数字作为文件夹名,在。git/objects文件夹,以代码的后30位作为文件名,在。git会在一定程度上压缩A.java的文件内容。
待续.....
本文到此结束。文章中可能有些地方没有解释清楚。请具体说明讨论内容。如有疑问,欢迎随时骚扰。看到请尽快回复!