git
git的三个区:
-
工作区,可用
ls
指令查看(当前文件的内容); -
暂存区,可用
git ls-files --stage
查看(add之后git会生成一个序列号把当前文件的状态保存并记录起来,放到暂存区,暂存区储存的格式就是<文件模式代码>
<文件的SHA-1哈希值(序列号)>
<该文件的暂存号>
<原始文件名>
) -
版本库,可用
find 目录 -type f
查看(commit之后会将文件提交到版本库,产生版本快照,可以通过敲命令回溯到对应版本)
也就是说,
-
当我们只在工作区进行编辑的时候(不使用add指令),内容是没有保障的,只能在当前的基础上修改,出现错误后需要重新定位查找,然后修改覆盖。
-
当使用add指令将文件提交到暂存区之后,git会进行两步操作。
- 首先是给每个文件生成一个SHA-1哈希值,然后把文件的信息添加到暂存区
- 对暂存区进行快照,将暂存区的索引和对应文件的完整内容添加到版本库的objects文件中
-
使用commit指令后,才算真正实现了一个版本的管理。这时候版本库中有两个文件,一个是tree树对象,一个是commit对象
git另一种对象为blob对象,是用于存储文件内容的对象,当我们用
git cat-file -t 序列号
对暂存区的文件进行文件类型查询时,显示的结果就是blob
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ezpr1haC-1655541138817)(C:\Users\19120\AppData\Roaming\Typora\typora-user-images\image-20220617172253156.png)]
-
修改文件并add添加到暂存区时,暂存区中会生产新的SHA-1哈希值作为版本号覆盖旧的对应文件(发生了修改的),但是在版本库中,改变了的文件会生成一个新的blob对象来存储&#x