代码之家  ›  专栏  ›  技术社区  ›  Swatcat

git如何存储版本信息

  •  0
  • Swatcat  · 技术社区  · 6 年前

    我猜它们很可能是delta,但是如果一个文件有很多版本(例如100),那么:

    a) 当(如果有)存储文件的完整版本时(例如。测试.txt).

    b) 当一个新版本被创建时(假设添加了“Hello World”),那么它是否只存储一个delta。

    非常感谢。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Dai    6 年前

    (免责声明:我不是 git

    Git面向用户的外部模型是,提交表面上表示repo状态的快照,而不是SVN和TFS工作方式的增量或变更集。这就是Git如此强大的原因:因为对快照的推理(以及对快照之间的任意差异)比对一系列增量进行推理更容易。例如,尝试 rebase

    1. 当(如果有)存储文件的完整版本时(例如。测试.txt).

    git add git commit 一些新文件)或当你对许多小文件进行实质性的更改时。

    (需要引用)

    1. 当一个新版本被创建时(假设添加了“Hello World”),那么它是否只存储一个delta。

    (我认为“新版本”是指“新提交”。)

    不是自动的,也不一定。我建议阅读以下QA主题: Git internals: how does Git store small differences between revisions?

    1. testing.txt 我比较了20到90,它是如何建立两个版本的差异?

    从概念上讲,它获取快照20和快照90,并立即将两者进行比较。

    然而,在内部,它可能需要从对象存储中构建快照20和快照90,然后才能对它们进行比较,而且可能有内置的优化,使它能够检测和忽略不相关的提交和增量。