玖叶教程网

前端编程开发入门

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 对象的 ID
  • 父提交对象的 ID
  • 作者、提交者及提交信息等元信息

tree 对象

git ls-tree  f6ff29325167718c5eafb6fb1c10aea721b2fd12

主要由其他tree对象和blob对象的ID、路径名称组成

一个 tree 对象即可表示整个工作区中所有已提交目录及文件的内容

提交历史中的每一个提交都包含着一份完整的某一时刻的文件快照
并通过保存上一次提交的引用形成连续的文件快照历史

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言