Git存储快照,而不是更改?

Git存储快照,而不是更改?,git,Git,文件的这一部分: 描述git如何为每次提交存储完整文件系统/存储库的完整快照,而不是跟踪文件更改 我理解这个概念,但想通过例子来理解它。因此,我创建了一个包含8个修订/签入的虚拟SVN存储库 现在在SVN中,我做了一个“将项目更新为修订版”。例如第4版: 我的本地svn存储库会自动更新到修订版4的内容(删除/添加本地内容) 在我看来,从本地文件系统的角度来看,在Git中签出前一个提交时,似乎正是这样 在签出以前版本/修订的代码库时,我是否遗漏了一些东西,或者Git和SVN在磁盘上的文件如何更

文件的这一部分:

描述git如何为每次提交存储完整文件系统/存储库的完整快照,而不是跟踪文件更改

我理解这个概念,但想通过例子来理解它。因此,我创建了一个包含8个修订/签入的虚拟SVN存储库

现在在SVN中,我做了一个“将项目更新为修订版”。例如第4版:

我的本地svn存储库会自动更新到修订版4的内容(删除/添加本地内容)

在我看来,从本地文件系统的角度来看,在Git中签出前一个提交时,似乎正是这样


在签出以前版本/修订的代码库时,我是否遗漏了一些东西,或者Git和SVN在磁盘上的文件如何更改方面的行为是否不一样?

Git commit只包含更改/新文件。它还链接到以前的提交。这就是找到所有其他文件的方式

但在未来,旧对象可以被压缩以进行空间优化

我的本地svn存储库会自动更新到修订版4的内容(删除/添加本地内容)

在我看来,从本地文件系统的角度来看,在Git中签出前一个提交时,似乎正是这样

没错,只是git的内部结构更简单、更有用

当涉及到文件在磁盘上的更改方式时,Git和SVN的行为是否不一样


同样正确:就任何人的工作树而言,git和svn都有相同的基本工作,将任何人告诉它要关注的任何版本的内容放在工作树上,并接收新版本,git的内部模型是直接存储版本。每当打包新内容以进行压缩的回报看起来令人满意时,它的对象访问层就会在幕后完成这项工作,但实际的内容跟踪和源代码控制从来没有看到过这一点。

好的提示:,:Git中的快照还意味着,如果相同的内容出现两次,它只存储一次。好的,但在文件系统视图中,当签出特定的提交/修订(忽略其内部开始的方式)时,您看不到Git/SVN之间有任何区别吗?Git将在.Git dir中查找以前的对象并进行替换(删除/添加)文件在两次修订之间发生了更改当我更新到以前的修订时,在SVN中也会发生同样的情况-文件会根据当时的更改被删除/添加/更新。区别在于使用
git
可以在本地执行,但
SVN
需要从server@Russel这是不正确的。
git
中的提交包含整个工作目录的全部内容(当然不包括被忽略的内容,或者没有被
git添加的内容),而不仅仅是更改的内容。SVN、CVS等按照您描述的方式工作—只存储更改—但是
git
存储项目的快照。