GIT通过存储diff管理文件?

时间:2014-08-18 09:12:01

标签: git

我参加了一个讲课,我明白无论何时在文件中进行更改,GIT都不会存储差异,而是将修改后的文件的新快照存储在新版本中。 我几乎没有问题:

  1. 我对这个概念的理解是否正确?
  2. 如果是,那么如何存储整个文件比在同一个文件的两个版本之间存储差异更好?这不是浪费空间吗?
  3. 为什么我们需要添加才能对文件执行提交,为什么不能直接执行? (我知道这有点摆脱困境)
  4. 如果我误解了任何事情,请纠正我。

2 个答案:

答案 0 :(得分:3)

不要混淆修改和存储。

    与其他VCS相比,
  • 修订版是完整的文件系统。 Git没有使用之前的delta来构建当前版本:它引用了所有内容 请参阅Git Basics

http://git-scm.com/figures/18333fig0105-tn.png

由于Git的核心是 content 管理器,因此具有相同内容的两个文件实际上将存储一次。

作为for the index,它允许您准备下一次提交,不仅包括您要添加的文件,还包括您要添加的 part 文件。<登记/> 另见:

答案 1 :(得分:1)

  1. 是的,但是定期git会压缩旧文件并将它们存储为将文件合并在一起并压缩它们的包文件,但我认为你真的不需要担心这个。

  2. 如果您不更改文件,则在提交期间不会重复该文件 因此大多数文件只存在一次,只有修改过的文件存储为新文件。结合定期包装压缩,这应该控制存储。

  3. (与存储格式有些无关)暂存更改添加到索引或只是添加(所有等效内容)允许您选择要提交的更改。它基本上使您能够在多次提交中拆分多个更改,这非常有用。 (您可以使用git add -A在1个命令中添加所有更改)

  4. 有关包文件的更多信息:

    http://git-scm.com/book/en/Git-Internals-Packfiles