GIT的组成部分
GIT由三个部分组成工作区
存放当前操作文件的本地文件系统目录暂存区
a、在工作区可随意添加或编辑文件
b、将修改后的文件添加到暂存区提交历史
c、并记录到提交历史工作区
Git 可以把工作区中的文件处理压缩成一个提交对象暂存区
也能将取得的提交对象解包成文件同步到工作区中
a、在工作区可能会同时更改多个完全不相干的文件
b、将它们分别放入暂存区
c、在不同的提交中加入提交历史
d、暂存区还用于合并冲突时存放文件的不同版本
a、刚初始化的Git仓库 暂存区是空的
b、然后会填充最近一次提交所对应的文件快照
git status
将工作区的文件与暂存区的文件快照进行对比
并提示我们有哪些做了修改的文件尚未加入暂存区
不同的区对应不同的实体
a、工作区有可见的文件系统目录
b、暂存区的实体是位于 .git 目录的 index 文件
c、提交历史通过 .git/objects 目录保存着所有提交对象
Index 文件
index 是一个二进制文件
包含着一个由路径名称、权限和
blob 对象的 SHA-1 值组成的有序列表
元数据
包含
a、每个文件的创建时间
b、最后修改时间等元数据
c、指向实际的数据对象的引用
d、保存了一份完整的文件快照
因此可以通过对比SHA-1校验和
实现与工作区文件之间的快速比较
查看index中的内容
git ls-files --stage
包含
a、暂存区文件的路径名称
b、SHA-1 ID
文件内容已经作为 blob 对象保存到了 .git/objects 目录中
查看.git/objects目录
tree .git/objects -L 2
blob 对象
blob 对象是 Git 用来保存文件数据的二进制对象
可以通过 ID 取得对应的 blob 对象
通过ID查看对象内容
git cat-file -p adc335f5acd0ef124dbdccef5060f5f01113a5dc
将一个修改过的文件加入暂存区后提交历史
如果又在工作区对文件进行了新的修改
需要重新将其加入暂存区
提交历史是工作区文件在不同时间的文件快照
快照即文件或文件夹在特定时间点的状态
包括内容和元信息
查看当前分支的提交历史
git log
a、Git 通过「提交对象」来储存每一次提交
b、对对象内容进行 SHA-1 计算得到的哈希值即ID
不同的内容一定会得到不同的结果
c、Git 既把ID作为每一个对象(不仅仅是提交对象)的唯一标识符
d、也用作 .git/objects 目录中的地址(其中存储着实际的二进制文件)
通过id找对象并打印内容
git cat-file -p f6ff29325167718c5eafb6fb1c10aea721b2fd12
提交对象的内容包含
tree 对象
git ls-tree f6ff29325167718c5eafb6fb1c10aea721b2fd12
主要由其他tree对象和blob对象的ID、路径名称组成
一个 tree 对象即可表示整个工作区中所有已提交目录及文件的内容
提交历史中的每一个提交都包含着一份完整的某一时刻的文件快照
并通过保存上一次提交的引用形成连续的文件快照历史
版权声明
本文仅代表作者观点,不代表博信信息网立场。