暂存区就是.git/index下这么个文件。
那么,刚刚做完git commit之后,.git/index会变为空吗? 显然不是。
刚刚做完git commit之后,git diff比较工作区与暂存区,难道是工作区与空比较吗? 显然不是。
如果做完git add .之后,把工作区的文件、文件夹全部删除,然后执行git commit, 会怎样? 当然是一切OK,又提交了一个版本。这说明什么? 说明增加到暂存区的信息,虽然没有存入版本库,但已经独立于工作区的另一套东西了。
如果你做了一大堆更改,增加了几个.lib依赖库,一共又好几兆的数据要增加给git,那么你猜git add . 与git commit,哪条命令明显耗时,哪条命令闪电执行完? 答案是git add很耗时;git commit闪电完成。
答案是git add命令把发生了变化的文件压缩创制为BLOB型的git object存入了.git\objects,当然很耗时;在.git/index保存了这些文件(BLOB对象)与文件夹(TREE对象)的引用信息。
结论:刚刚做完git commit之后,.git/index所指向的git objects与HEAD是一样的。
Sign in to make a reply
突破与瞬变
暂存区就是.git/index下这么个文件。
那么,刚刚做完git commit之后,.git/index会变为空吗? 显然不是。
刚刚做完git commit之后,git diff比较工作区与暂存区,难道是工作区与空比较吗? 显然不是。
如果做完git add .之后,把工作区的文件、文件夹全部删除,然后执行git commit, 会怎样? 当然是一切OK,又提交了一个版本。这说明什么? 说明增加到暂存区的信息,虽然没有存入版本库,但已经独立于工作区的另一套东西了。
如果你做了一大堆更改,增加了几个.lib依赖库,一共又好几兆的数据要增加给git,那么你猜git add . 与git commit,哪条命令明显耗时,哪条命令闪电执行完? 答案是git add很耗时;git commit闪电完成。
答案是git add命令把发生了变化的文件压缩创制为BLOB型的git object存入了.git\objects,当然很耗时;在.git/index保存了这些文件(BLOB对象)与文件夹(TREE对象)的引用信息。
结论:刚刚做完git commit之后,.git/index所指向的git objects与HEAD是一样的。