日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

版本控制:集中式(SVN) vs 分布式(GIT)

發(fā)布時(shí)間:2023/12/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 版本控制:集中式(SVN) vs 分布式(GIT) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Linus一直痛恨的CVS及SVN都是集中式的版本控制系統(tǒng),而Git是分布式版本控制系統(tǒng),集中式和分布式版本控制系統(tǒng)有什么區(qū)別呢?

先說(shuō)集中式版本控制系統(tǒng),版本庫(kù)是集中存放在中央服務(wù)器的,而干活的時(shí)候,用的都是自己的電腦,所以要先從中央服務(wù)器取得最新的版本,然后開始干活,干完活了,再把自己的活推送給中央服務(wù)器。中央服務(wù)器就好比是一個(gè)圖書館,你要改一本書,必須先從圖書館借出來(lái),然后回到家自己改,改完了,再放回圖書館。

集中式版本控制系統(tǒng)最大的毛病就是必須聯(lián)網(wǎng)才能工作,如果在局域網(wǎng)內(nèi)還好,帶寬夠大,速度夠快,可如果在互聯(lián)網(wǎng)上,遇到網(wǎng)速慢的話,可能提交一個(gè)10M的文件就需要5分鐘,這還不得把人給憋死啊。

那分布式版本控制系統(tǒng)與集中式版本控制系統(tǒng)有何不同呢?首先,分布式版本控制系統(tǒng)根本沒有“中央服務(wù)器”,每個(gè)人的電腦上都是一個(gè)完整的版本庫(kù),這樣,你工作的時(shí)候,就不需要聯(lián)網(wǎng)了,因?yàn)榘姹編?kù)就在你自己的電腦上。既然每個(gè)人電腦上都有一個(gè)完整的版本庫(kù),那多個(gè)人如何協(xié)作呢?比方說(shuō)你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時(shí),你們倆之間只需把各自的修改推送給對(duì)方,就可以互相看到對(duì)方的修改了。

和集中式版本控制系統(tǒng)相比,分布式版本控制系統(tǒng)的安全性要高很多,因?yàn)槊總€(gè)人電腦里都有完整的版本庫(kù),某一個(gè)人的電腦壞掉了不要緊,隨便從其他人那里復(fù)制一個(gè)就可以了。而集中式版本控制系統(tǒng)的中央服務(wù)器要是出了問(wèn)題,所有人都沒法干活了。

在實(shí)際使用分布式版本控制系統(tǒng)的時(shí)候,其實(shí)很少在兩人之間的電腦上推送版本庫(kù)的修改,因?yàn)榭赡苣銈儌z不在一個(gè)局域網(wǎng)內(nèi),兩臺(tái)電腦互相訪問(wèn)不了,也可能今天你的同事病了,他的電腦壓根沒有開機(jī)。因此,分布式版本控制系統(tǒng)通常也有一臺(tái)充當(dāng)“中央服務(wù)器”的電腦,但這個(gè)服務(wù)器的作用僅僅是用來(lái)方便“交換”大家的修改,沒有它大家也一樣干活,只是交換修改不方便而已。

當(dāng)然,Git的優(yōu)勢(shì)不單是不必聯(lián)網(wǎng)這么簡(jiǎn)單,后面我們還會(huì)看到Git極其強(qiáng)大的分支管理,把SVN等遠(yuǎn)遠(yuǎn)拋在了后面。

CVS作為最早的開源而且免費(fèi)的集中式版本控制系統(tǒng),直到現(xiàn)在還有不少人在用。由于CVS自身設(shè)計(jì)的問(wèn)題,會(huì)造成提交文件不完整,版本庫(kù)莫名其妙損壞的情況。同樣是開源而且免費(fèi)的SVN修正了CVS的一些穩(wěn)定性問(wèn)題,是目前用得最多的集中式版本庫(kù)控制系統(tǒng)。

除了免費(fèi)的外,還有收費(fèi)的集中式版本控制系統(tǒng),比如IBM的ClearCase(以前是Rational公司的,被IBM收購(gòu)了),特點(diǎn)是安裝比Windows還大,運(yùn)行比蝸牛還慢,能用ClearCase的一般是世界500強(qiáng),他們有個(gè)共同的特點(diǎn)是財(cái)大氣粗,或者人傻錢多。

微軟自己也有一個(gè)集中式版本控制系統(tǒng)叫VSS,集成在Visual Studio中。由于其反人類的設(shè)計(jì),連微軟自己都不好意思用了。

分布式版本控制系統(tǒng)除了Git以及促使Git誕生的BitKeeper外,還有類似Git的Mercurial和Bazaar等。這些分布式版本控制系統(tǒng)各有特點(diǎn),但最快、最簡(jiǎn)單也最流行的依然是Git!

?

?

總結(jié):

1. 主要區(qū)別:對(duì)歷史版本維護(hù)的位置

Git本地倉(cāng)庫(kù)包含代碼庫(kù)還有歷史庫(kù),在本地的環(huán)境開發(fā)就可以記錄歷史。 而SVN的歷史庫(kù)存在于中央倉(cāng)庫(kù),每次對(duì)比與提交代碼都必須連接到中央倉(cāng)庫(kù)才能進(jìn)行。

Git 好處在于: 1)自己可以在脫機(jī)環(huán)境查看開發(fā)的版本歷史 。2)多人開發(fā)時(shí)如果充當(dāng)中央倉(cāng)庫(kù)的Git倉(cāng)庫(kù)掛了,任何一個(gè)開發(fā)者的倉(cāng)庫(kù)都可以作為中央倉(cāng)庫(kù)進(jìn)行服務(wù)。

開發(fā)者倉(cāng)庫(kù)一般不直接充當(dāng)中央庫(kù),但可以隨時(shí)創(chuàng)建一個(gè)新的中央庫(kù)然后同步就立刻恢復(fù)了中央庫(kù)。

?

?

2. Git 每一次 commit 是提交到本機(jī)的服務(wù)器,這個(gè)不需要聯(lián)網(wǎng)。版本管理,就是要方便知道每一個(gè)版本,比如回到之前的某個(gè)版本,而且回退到某個(gè)之前的版本,也是從本機(jī)的服務(wù)器拿的數(shù)據(jù),這些都不需要聯(lián)網(wǎng)。

而 SVN 的每一次 commit 都需要聯(lián)網(wǎng),這就需要網(wǎng)絡(luò)的等待。 Git只有在Push、pull 的時(shí)候需要聯(lián)網(wǎng),而我們平時(shí)更多的操作應(yīng)是commit。

?

斷網(wǎng)情況下,SVN也能工作,但是由于沒有版本控制的記錄,當(dāng)多人修改后就比較難以快速的合并。但是Git都在本地保存了版本記錄,所以大家合并起來(lái)就方便得多了。

?

?

轉(zhuǎn)自:

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374027586935cf69c53637d8458c9aec27dd546a6cd6000

總結(jié)

以上是生活随笔為你收集整理的版本控制:集中式(SVN) vs 分布式(GIT)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。