1.本地版本控制:
image.png许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。
其中最流行的一种叫做 RCS,它的工作原理是在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。
2.集中化的版本控制系统(CVCS)
不同系统上的开发者协同工作?
有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。 多年以来,这已成为版本控制系统的标准做法。
诸如 CVS、Subversion 以及 Perforce 等
弊:要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。
image.png3.分布式版本控制系统(DVCS)
image.png客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。
何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。像 Git、Mercurial、Bazaar 以及 Darcs 等
更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。
很难理解svn和Git的区别,或者说优势。
svn commit是需要联网的,svn中央服务器代码一旦丢失就很难恢复。
分布式理论上是不需要中央服务器的,A和B是可以直接相互推送的,但是真实开发中A和B的电脑要相互访问是很麻烦的。所以出现了github和OSGit。
网友评论