Git'的优点/缺点是什么;s基于快照的方法在实践中与传统的VCS相比?

Git'的优点/缺点是什么;s基于快照的方法在实践中与传统的VCS相比?,git,svn,version-control,Git,Svn,Version Control,在官方的git书籍中,我可以看到: Git认为它的数据更像是一个快照流。这是一个 Git和几乎所有其他VCS之间的重要区别。它使 Git几乎重新考虑了版本控制的每一个方面,而大多数其他方面都是如此 从上一代复制的系统。这使Git更像 一个小型文件系统,在它的基础上构建了一些功能极其强大的工具 它,而不仅仅是一个风投。我们将探讨您的一些好处 当我们在本文中介绍Git分支时,以这种方式考虑您的数据会有所收获 Git分支 这在实践中有什么区别?在这本书中,它说分支主题将涵盖这些好处,但没有提到,我不明

在官方的git书籍中,我可以看到:

Git认为它的数据更像是一个快照流。这是一个 Git和几乎所有其他VCS之间的重要区别。它使 Git几乎重新考虑了版本控制的每一个方面,而大多数其他方面都是如此 从上一代复制的系统。这使Git更像 一个小型文件系统,在它的基础上构建了一些功能极其强大的工具 它,而不仅仅是一个风投。我们将探讨您的一些好处 当我们在本文中介绍Git分支时,以这种方式考虑您的数据会有所收获 Git分支

这在实践中有什么区别?在这本书中,它说分支主题将涵盖这些好处,但没有提到,我不明白为什么这很重要。例如,我可以在SVN中创建分支,我可以创建补丁(如樱桃采摘)等等。那么,为什么快照行为比SVN更有用呢


请注意,我真的很喜欢Git,我无意抨击它,我只是想更好地理解它。

主要优势之一仍然是在合并方面,SVN当时在这一领域苦苦挣扎。
(见“”)

将表示分支(而不是SVN子树)和与每个提交关联的快照表示组合在一起:

发件人:

Git使用分支提示指向的两个快照以及它们的共同祖先来执行一个简单的

Git不只是向前移动分支指针,而是创建一个新的快照,该快照是三方合并的结果,并自动创建一个指向它的新提交。这称为合并提交,其特殊之处在于它有多个父级


您的问题有点不清楚,因为一般来说,Apache Subversion和Git都是基于快照的。然而,Git的模型有点不同。这是Git和几乎所有其他VCS之间的一个重要区别。但同时Git并不是完全基于快照的,因为它和Subversion一样。因此,我不明白您想知道基于快照的模型与X模型相比有哪些优点或缺点

然而,Git模型仍然有一个主要缺点——可能完全丢失修订历史。例如,使用Git,一旦删除了从未合并过的分支,就不再有指向该分支中包含的提交的指针。在这种情况下,垃圾收集将完成它的工作,并从存储库历史记录中删除提交,而不使用任何指针。永远

git模型预计大多数人拥有的大多数分支都将保留下来 专用于一个存储库,将被合并或重新设置基础,完全或 一部分,在另一个分支上,将被放弃,并将 以后会被垃圾收集

然而,在某些情况下,我希望拥有我的代码库的全部历史。即使有人删除了带有未完成或错误工作的分支,我希望将来能够访问它


相反,对于Subversion这样的集中式系统,很难(甚至不可能)删除已提交到存储库的数据。Subversion存储库历史记录中的修订是不可变的。

一个很大的优势是,您可以在多个分支之间共享这些快照。我也可以在SVN中共享修补程序。这可以在传统的VCS中完成。