1.本地版本控制:
許多人習(xí)慣用復(fù)制整個(gè)項(xiàng)目目錄的方式來保存不同的版本智亮,或許還會(huì)改名加上備份時(shí)間以示區(qū)別。
其中最流行的一種叫做 RCS,它的工作原理是在硬盤上保存補(bǔ)丁集(補(bǔ)丁是指文件修訂前后的變化)遣铝;通過應(yīng)用所有的補(bǔ)丁爬橡,可以重新計(jì)算出各個(gè)版本的文件內(nèi)容冻河。
2.集中化的版本控制系統(tǒng)(CVCS)
不同系統(tǒng)上的開發(fā)者協(xié)同工作箍邮?
有一個(gè)單一的集中管理的服務(wù)器,保存所有文件的修訂版本芋绸,而協(xié)同工作的人們都通過客戶端連到這臺(tái)服務(wù)器媒殉,取出最新的文件或者提交更新担敌。 多年以來摔敛,這已成為版本控制系統(tǒng)的標(biāo)準(zhǔn)做法。
諸如 CVS全封、Subversion 以及 Perforce 等
弊:要整個(gè)項(xiàng)目的歷史記錄被保存在單一位置马昙,就有丟失所有歷史更新記錄的風(fēng)險(xiǎn)。
3.分布式版本控制系統(tǒng)(DVCS)
客戶端并不只提取最新版本的文件快照刹悴,而是把代碼倉(cāng)庫完整地鏡像下來行楞。
何一處協(xié)同工作用的服務(wù)器發(fā)生故障,事后都可以用任何一個(gè)鏡像出來的本地倉(cāng)庫恢復(fù)土匀。 因?yàn)槊恳淮蔚目寺〔僮髯臃浚瑢?shí)際上都是一次對(duì)代碼倉(cāng)庫的完整備份。像 Git就轧、Mercurial证杭、Bazaar 以及 Darcs 等
更進(jìn)一步,許多這類系統(tǒng)都可以指定和若干不同的遠(yuǎn)端代碼倉(cāng)庫進(jìn)行交互妒御。籍此解愤,你就可以在同一個(gè)項(xiàng)目中,分別和不同工作小組的人相互協(xié)作乎莉。 你可以根據(jù)需要設(shè)定不同的協(xié)作流程送讲,比如層次模型式的工作流,而這在以前的集中式系統(tǒng)中是無法實(shí)現(xiàn)的惋啃。
很難理解svn和Git的區(qū)別哼鬓,或者說優(yōu)勢(shì)。
svn commit是需要聯(lián)網(wǎng)的边灭,svn中央服務(wù)器代碼一旦丟失就很難恢復(fù)魄宏。
分布式理論上是不需要中央服務(wù)器的,A和B是可以直接相互推送的存筏,但是真實(shí)開發(fā)中A和B的電腦要相互訪問是很麻煩的宠互。所以出現(xiàn)了github和OSGit味榛。