在对比集中式版本控制svn和分布式的版本控制git的时候可能会有一些疑问,例如,git 不联网可以使用吗?集中式版本控制系统的好处是什么?
以下总结了一些问题的对比,都是个人理解,如有不正确的请指正。
设计思路
git 分布式的核心设计是同步,而不是主从
svn 集中式的版本控制系统设计核心思路是总分,集中管理
svn 的版本控制系统在中央服务器上,git 每台电脑上都会存储版本控制信息,减少了对中央服务器(称作git服务器比较合适)的依赖。
关于对文件的保存
svn保存整个文件
git保存最新文件和Diff信息
关于commit
svn commit后将自己的修改提交到远程仓库,需要联网才能commit
git commit后将自己的修改提交到本地暂存区,这一步不需要联网,之后通过push才会退到远程仓库,需要联网。
关于是否需要联网
互联网内怎么都行,异地提交或外网提交的话都是需要联网的。svn update 和 commit 的时候没网是不能操作的;git pull(同步本地仓库) 和 push(推送到远程) 的时候需要有网络。
svn 没网的时候暂时在本地修改文件,修改之后不能提交,等待有网络之后提交;git 没网的时候暂时先提交到本地暂存区,等待有网之后push到远程。
断网时,svn 不能commit、update、push 也不能回滚等,git 可以 commiit 可以回滚等操作。
关于服务器挂了
假设svn服务器没了,就会丢掉了所有历史信息,因为本地只有当前版本以及部分历史信息。git 的话本地有着完整的历史信息。
使用上 svn 更像是一个文件管理系统,层及目录很清晰,git 的话突出的是其去中心化和强大的版本控制。