轉(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ù)。
但是這種版本控制會(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)。
但是集中式的版本控制,有個(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)解決了。
另外類(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ù)。