美文网首页
git学习日志-git保存数据的简介

git学习日志-git保存数据的简介

作者: Levi_moon | 来源:发表于2020-07-05 21:43 被阅读0次

    接下来几章将学习git分支,但是在了解git分支之前,有必要先回顾下git是如何保存数据及数据的组成:

    • git保存的不是文件的变化或差异,而是一系列不同时刻的快照;
    • 在进行提交操作时,git会保存一个提交对象;
      • 这个提交对象会包含一个指向暂存内容快照的指针,
      • 这个提交对象还包含作者的姓名,邮箱、输入的注释,
      • 这个提交对象还包含指向它的父对象的指针,
        • 首次提交产生的提交对象没有父对象
        • 普通提交的提交对象有一个父对象
        • 由多个分支合并产生的提交对象有多个父对象

    为了更好的理解git是如何保存数据的,假设现在有一个工作目录,里面包含了三个将要提交的文件。

    1. git会为每个文件计算校验和;
    2. git会把当前版本的文件快照保存到git仓库中(git使用blob对象保存它们),并将校验和加入到暂存区等待提交;
    3. 当进行提交操作时,git会先计算每个子目录的校验和,然后在git仓库中将这些校验和保存为树对象;
    4. git创建一个提交对象,除了包含以上提到的信息,还会包含指向这个树对象的指针。

    至此,git仓库中总共有五个对象,分别是:三个blob对象(保存文件快照)、一个树对象(记录目录结构和blob对象索引)、一个提交对象(包含指向前述对象的指针及所有提交信息)。

    提交时,仓库中的五个对象

    当对文件做了修改后再提交,那么这次产生的提交对象会包含一个指向上次提交对象(父对象)的指针。

    修改后再提交

    git的分支,其本质仅仅是指向提交对象的可变指针。git的默认分支名称是master。在多次提交后,我们其实已经有一个指向最后那个提交对象的master分支了。master分支会在每次提交时自动向前移动。

    相关文章

      网友评论

          本文标题:git学习日志-git保存数据的简介

          本文链接:https://www.haomeiwen.com/subject/jcojqktx.html