版本控制系統(tǒng)對比:Git與Subversion
原創(chuàng)【51CTO獨(dú)家特稿】 Subversion是一個(gè)自由,開源的版本控制系統(tǒng)。在Subversion管理下,文件和目錄可以超越時(shí)空。與CVS, Subversion 等不同的是Git采用了分布式版本庫的方式,不必服務(wù)器端軟件支持,使源代碼的發(fā)布和交流極其方便。究竟哪個(gè)更好些呢?
Subversion 屬于集中式的版本控制系統(tǒng)
●每個(gè)版本庫有唯一一個(gè)“官方地址”,每個(gè)用戶都從這個(gè)唯一地址獲取代碼、數(shù)據(jù);
●獲取代碼庫的更新,也只能連接到這個(gè)唯一的代碼庫,同步以取得***數(shù)據(jù);
●提交必須有網(wǎng)絡(luò)連接(非本地版本庫);
●提交需要授權(quán),如果沒有授權(quán),提交失敗;
●提交并非每次都能夠成功。如果有其他人先于你提交,會提示“改動(dòng)基于過時(shí)的版本,先更新再提交”… 諸如此類;
沖突解決是一個(gè)提交速度的競賽:手快者,先提交,平安無事;手慢者,后提交,可能遇到麻煩的沖突解決。
Git屬于分布式的版本控制系統(tǒng)
●眾生平等,每個(gè)檢出(checkout)的版本庫,或者更準(zhǔn)確的說每個(gè)克隆(clone)的版本庫都是平等的;
●你可以從任何一個(gè)版本庫的克隆來創(chuàng)建屬于你自己的版本庫,同時(shí)你的版本庫也可以作為源提供給他人,只要你愿意;
●獲取版本庫的更新,可以來自任何源;
●你可以從張三那里獲得上游的改動(dòng),包括張三自己的提交;你也可以從李四那里獲得上游的改動(dòng),也可能包括李四的提交;
●提交完全在本地完成。無須別人給你授權(quán),你的版本庫你作主;
●當(dāng)然你在你的版本庫中的改動(dòng)是否別人愿意合并到他們的版本庫則是另外的一回事了;
●提交總是會成功,因?yàn)樘峤皇窃诒镜剡M(jìn)行的么;
●甚至基于舊版本的改動(dòng)也可以成功提交,提交會基于舊的版本創(chuàng)建一個(gè)新的分支 ;
●沖突解決不再像是SVN一樣的提交競賽,而是在需要的時(shí)候才進(jìn)行合并和沖突解決 ;
●Subversion的提交競賽,在多人協(xié)作開發(fā)時(shí),提交經(jīng)常被打斷;
●Git的每個(gè)用戶就好像工作在獨(dú)立的 Feature Branch(功能分支)中 ;
●Git的提交不會被打斷,直到你的工作完全滿意了,PUSH給他人或者他人PULL你的版本庫;
●合并會發(fā)生在PULL和PUSH過程中,不能自動(dòng)解決的沖突會提示您手工完成;
●Git也可以模擬集中式的工作模式;Subversion只有一種集中式的工作模式;
●所有人都和服務(wù)器同步,提交直接到服務(wù)器上;
●Git也可以模擬集中式的工作模式 ;
●Git版本庫統(tǒng)一放在服務(wù)器中;
●可以為 Git 版本庫進(jìn)行授權(quán):誰能創(chuàng)建版本庫,誰能向版本庫PUSH,誰能夠讀取(克隆)版本庫;
●團(tuán)隊(duì)的成員先將服務(wù)器的版本庫克隆到本地;并經(jīng)常的從服務(wù)器的版本庫拉(PULL)***的更新;
●團(tuán)隊(duì)的成員將自己的改動(dòng)推(PUSH)到服務(wù)器的版本庫中,當(dāng)其他人和版本庫同步(PULL)時(shí),會自動(dòng)獲取改變;
●Git 的集中式工作模式非常靈活;
●你完全可以在脫離Git服務(wù)器所在網(wǎng)絡(luò)的情況下,如移動(dòng)辦公/出差時(shí),照常使用代碼庫;
●你只需要在能夠接入Git服務(wù)器所在網(wǎng)絡(luò)時(shí),PULL和PUSH即可完成和服務(wù)器同步以及提交;
●Git提供rebase命令,可以讓你的改動(dòng)看起來是基于***的代碼實(shí)現(xiàn)的改動(dòng);
●Git有更多的工作模式可以選擇,遠(yuǎn)非 Subversion可比。
【51CTO獨(dú)家特稿,轉(zhuǎn)載請標(biāo)明出處及作者!】
【編輯推薦】
























