svn和git的區(qū)別,為什么使用git?

轉(zhuǎn)載:https://blog.csdn.net/hymking/article/details/53621908

1.git
git官網(wǎng)https://git-scm.com/ 官網(wǎng)上是這么介紹的:
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
git是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),用以快速高效的處理項(xiàng)目從很小到非常大的項(xiàng)目的版本控制的所有事情。 另外官網(wǎng)上的介紹還有,git性能卓越,超過(guò)甚至顛覆一些其他的產(chǎn)品如cvs,perfamce等,git有非常方便的本地分支,多個(gè)工作流等。 2.git和svn的比較
git和svn是目前最常用的團(tuán)隊(duì)協(xié)作的版本控制系統(tǒng)。下面我們從版本控制系統(tǒng)的
以下的1,2,3也正是版本控制的演進(jìn)歷史:
①本地版本控制系統(tǒng):(解決個(gè)人的版本管理)
很多人的選擇的版本控制方法是將文件復(fù)制到另一個(gè)目錄(可能是一個(gè)時(shí)間標(biāo)記的目錄,如果他們是聰明)。這種做法是很常見(jiàn)的,因?yàn)樗侨绱撕?jiǎn)單,但是很容易出錯(cuò),比如很容易忘了你是哪個(gè)目錄,不小心寫(xiě)了錯(cuò)誤的文件等等。 為了解決這個(gè)問(wèn)題,程序員早就開(kāi)發(fā)了VCSS具有該保留所有文件的更改版本控制下的一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)。

image

但是這種版本控制會(huì)丟失。畢竟是本地的。

②集中式版本控制:(svn是這種形式)

人們遇到的下一個(gè)主要問(wèn)題是,他們需要與其他系統(tǒng)上的開(kāi)發(fā)者合作。為了解決這個(gè)問(wèn)題,出現(xiàn)了集中式版本控制系統(tǒng)(CVCSs)的開(kāi)發(fā)工作。集中式版本控制系統(tǒng),如CVS,Subversion和Perforce的,有一個(gè)包含所有版本文件的單個(gè)服務(wù)器和一個(gè)數(shù)字(版本號(hào)),眾多客戶(hù)端從這個(gè)server上去檢出文件(只是文件,本地沒(méi)有倉(cāng)庫(kù)的概念)。 多年以來(lái),這已經(jīng)成為版本控制的標(biāo)準(zhǔn)。

image

但是集中式的版本控制,有個(gè)嚴(yán)重的缺陷。就是中央服務(wù)器的單點(diǎn)故障。如果服務(wù)宕機(jī)一個(gè)小時(shí),在這期間,沒(méi)有任何人可以在正在工作的版本上很好的合作或者去保存某一個(gè)版本的改變。另外如果中央數(shù)據(jù)庫(kù)的磁盤(pán)壞了,并且可能沒(méi)有保存?zhèn)浞荩敲磳G失所有的東西。你失去了絕對(duì)一切 - 除了單一的任何人的快照恰好有在本地計(jì)算機(jī)上項(xiàng)目的整個(gè)歷史。當(dāng)然本地的版本控制系統(tǒng)也有相同的問(wèn)題。雖然,你能夠把每個(gè)人的本地代碼,進(jìn)行合并得到一個(gè)相對(duì)完整的版本,但是當(dāng)你把這個(gè)相對(duì)完整的版本重新部署到服務(wù)器的新倉(cāng)庫(kù)時(shí),將會(huì)丟失所有的歷史版本包括日志。

③分布式版本控制:(git是這種形式,GIT跟SVN一樣有自己的集中式版本庫(kù)或服務(wù)器)

這是在分布式版本控制系統(tǒng)(DVCSs)步在DVCS(如GIT中),客戶(hù)端不只是檢查出文件的最新快照:他們完全鏡像的存儲(chǔ)庫(kù)(本地有倉(cāng)庫(kù),這就是分布式的意義)。因此,如果出現(xiàn)上述問(wèn)題,任何客戶(hù)機(jī)庫(kù)的可復(fù)制備份到服務(wù)器,以恢復(fù)它。每一個(gè)克隆確實(shí)是所有數(shù)據(jù)的完整備份(除了沒(méi)有push的代碼,這個(gè)也是理所當(dāng)然的)。

那么針對(duì)于本地版本控制系統(tǒng),和集中式版本控制系統(tǒng)的最嚴(yán)重的缺陷,就被分布式版本控制系統(tǒng)解決了。

image

另外類(lèi)似git這樣的分布式版本管理系統(tǒng),能更好的去處理你在多個(gè)遠(yuǎn)程倉(cāng)庫(kù)上的工作。這樣是你可以同時(shí)去和多個(gè)團(tuán)隊(duì)去寫(xiě)作開(kāi)發(fā)。這允許您設(shè)置幾種類(lèi)型的工作流,這些集中式版本控制系統(tǒng)是做不到的。比如說(shuō)分層模型。

對(duì)比結(jié)果:

1.git是分布式的scm,svn是集中式的。(最核心)

2.git是每個(gè)歷史版本都存儲(chǔ)完整的文件,便于恢復(fù),svn是存儲(chǔ)差異文件,歷史版本不可恢復(fù)。(核心)

3.git可離線完成大部分操作,svn則不能。

4.git有著更優(yōu)雅的分支和合并實(shí)現(xiàn)。

5.git有著更強(qiáng)的撤銷(xiāo)修改和修改歷史版本的能力

6.git速度更快,效率更高。

基于以上區(qū)別,git有了很明顯的優(yōu)勢(shì),特別在于它具有的本地倉(cāng)庫(kù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容