这部分文件:
http://git-scm.com/book/en/v2/Getting-Started-Git-Basics
描述了git如何为每个提交存储完整文件系统/存储库的完整快照,而不是跟踪文件更改。
我理解这个概念,但想通过例子来理解它。因此,我创建了一个包含8个修订/签入的虚拟SVN存储库。
现在在SVN我做了一个“更新项目到修订版”。例如,修订版4:
我的本地svn存储库会自动更新到版本4的内容(删除/添加本地内容)
对我来说,这似乎就是在签出上一次提交时Git中发生的事情 - 从本地文件系统的角度来看。
在检查代码库的先前版本/修订版时,当涉及到磁盘上的文件更改方式时,我是否遗漏了某些内容或者Git和SVN的行为方式是否相同?
答案 0 :(得分:2)
我的本地svn存储库会自动更新到版本4的内容(删除/添加本地内容)
对我来说,这似乎就是在签出上一次提交时Git中发生的事情 - 从本地文件系统的角度来看。
这是正确的,只是git的内部结构更简单,更有用。
当谈到文件在磁盘上的变化时,Git和SVN的行为方式不一样
同样正确:虽然任何人的工作树都关注git和svn有相同的基本工作,把任何版本的内容都告诉它关心工作树并接受新版本来关心,git's内部模型是它直接存储版本。每当用于压缩新内容以进行压缩的收益看起来令人满意时,它的对象访问层将在引擎盖下完成,但实际的内容跟踪和源代码控制永远不会看到它。
答案 1 :(得分:-1)
Git commit仅包含已更改/新文件。它也与先前的提交相关联。这就是所有其他文件的找到方式。
但是将来可以压缩旧对象以进行空间优化。