svn和git有什么區(qū)別? webstorm怎樣配置svn?

大家好,我是IT修真院深圳分院第3期的學(xué)員,一枚正直純潔善良的前端程序員,今天給大家分享一下,修真院官網(wǎng)前端工程師深度思考中的知識(shí)點(diǎn)——SVN和Git有什么區(qū)別? webstorm怎樣配置svn?


一.背景介紹


為什么要說(shuō)這兩款軟件的區(qū)別?

這兩款版本控制軟件應(yīng)該是現(xiàn)在最流行的版本控制軟件。我們?cè)谧鋈蝿?wù)做項(xiàng)目的時(shí)候,特別強(qiáng)調(diào)要學(xué)習(xí)使用這兩款軟件。

如果是一個(gè)人做項(xiàng)目、任務(wù),很難有機(jī)會(huì)充分感受到它們的優(yōu)點(diǎn)和坑點(diǎn)。(git還是能感受到)。

多人合作開(kāi)發(fā),由于項(xiàng)目的復(fù)雜性,一個(gè)模塊或者一個(gè)文件可能需要多人同時(shí)編寫(xiě),這時(shí)就能體現(xiàn)出版本控制軟件的強(qiáng)大與適用。

無(wú)論是有新需求、bug、文件沖突還是安全性等問(wèn)題,它們都可以很好的協(xié)助我們進(jìn)行解決。




二.知識(shí)剖析

簡(jiǎn)要介紹一下SVN和GIT

細(xì)數(shù)版本控制軟件,多達(dá)十幾種,像VSS、CVS、ClearCase、PVCS等等這些我這個(gè)菜雞聽(tīng)都沒(méi)聽(tīng)說(shuō)過(guò)的軟件也曾經(jīng)有過(guò)很多用戶(hù)。

游戲公司用Perforce比較多,似乎是因?yàn)樵诙M(jìn)制文件的支持和大文件存儲(chǔ)上,Perforce占優(yōu)。

而在開(kāi)發(fā)者眼中似乎只存在SVN和GIT的存在,為什么呢?

因?yàn)樗鼈兪情_(kāi)源免費(fèi)的??!


SVN介紹


SVN是Subversion的簡(jiǎn)稱(chēng),是一個(gè)開(kāi)源代碼集中的版本控制系統(tǒng),支持大多數(shù)常見(jiàn)的操作系統(tǒng)。作為一個(gè)開(kāi)源的版

本控制系統(tǒng),Subversion管理著隨時(shí)間改變的數(shù)據(jù)。這些數(shù)據(jù)集中放置在一個(gè)中央資料檔案庫(kù)中。這個(gè)檔案庫(kù)很像

一個(gè)普通的文件服務(wù)器,它會(huì)記住每一次文件的變動(dòng)。這樣你就可以把檔案恢復(fù)到舊的版本,或是瀏覽文件的變動(dòng)歷

史。Subversion是一個(gè)通用的系統(tǒng),可用來(lái)管理任何類(lèi)型的文件,其中包括了程序源碼。

集中式代碼管理


集中式代碼管理的核心是服務(wù)器,所有開(kāi)發(fā)者在開(kāi)始新一天的工作之前從服務(wù)器獲取代碼,然后開(kāi)發(fā),最后解決沖突,提交。所有的版本信息都放在服務(wù)器上。如果脫離了服務(wù)器,開(kāi)發(fā)者基本上可以說(shuō)是無(wú)法工作的。下面舉例說(shuō)明:

開(kāi)始新一天的工作:

1、從服務(wù)器下載項(xiàng)目組最新代碼。

2、進(jìn)入自己的分支,進(jìn)行工作,每隔一個(gè)小時(shí)向服務(wù)器自己的分支提交一次代碼(很多人都有這個(gè)習(xí)慣。因?yàn)橛袝r(shí)候自己對(duì)代碼改來(lái)改去,最后又想還原到前一個(gè)小時(shí)的版本,或者看看前一個(gè)小時(shí)自己修改了哪些代碼)。

3、下班時(shí)間快到了,把自己的分支合并到服務(wù)器主分支上,一天的工作完成,并反映給服務(wù)器.


Git介紹

Git是開(kāi)源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。分布式相比于集中式的最大區(qū)別在

于開(kāi)發(fā)者可以提交到本地,每個(gè)開(kāi)發(fā)者通過(guò)克?。╣it clone),在本地機(jī)器上拷貝一個(gè)完整的Git倉(cāng)庫(kù).


分布式代碼管理


分布式版本控制系統(tǒng)根本沒(méi)有“中央服務(wù)器”,每個(gè)人的電腦上都是一個(gè)完整的版本庫(kù)服務(wù)器。工作的時(shí)候,就不需

要聯(lián)網(wǎng)了,因?yàn)榘姹編?kù)就在你自己的電腦上。既然每個(gè)人電腦上都有一個(gè)完整的版本庫(kù),那多個(gè)人如何協(xié)作呢?

比方說(shuō)你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時(shí),你們倆之間只需把各自的修改推

送給對(duì)方,就可以互相看到對(duì)方的修改了。



三.常見(jiàn)問(wèn)題


1.SVN和Git有什么區(qū)別?

2.webstorm怎樣配置svn?



四.解決方案

SVN和Git有什么區(qū)別?

1、集中式、分布式

1.1、SVN屬于集中化的版本控制系統(tǒng),有個(gè)不太精確的比喻:SVN = 版本控制+ 備份服務(wù)器

SVN使用起來(lái)有點(diǎn)像是檔案?jìng)}庫(kù)的感覺(jué),支持并行讀寫(xiě)文件,支持代碼的版本化管理,功能包括取出、導(dǎo)入、更新、分支、改名、還原、合并等。Git是一個(gè)分布式版本控制系統(tǒng),操作命令包括:clone,pull,push,branch,merge ,rebase,Git擅長(zhǎng)的是程序代碼的版本化管理。

1.2、GIT跟SVN一樣有自己的集中式版本庫(kù)或服務(wù)器。

但GIT更傾向于被使用于分布式模式,也就是每個(gè)開(kāi)發(fā)人員從中心版本庫(kù)/服務(wù)器上check out代碼后會(huì)在自己的機(jī)器上克隆一個(gè)自己的版本庫(kù)。可以這樣說(shuō),如果你被困在一個(gè)不能連接網(wǎng)絡(luò)的地方時(shí),你仍然能夠提交文件,查看歷史版本記錄,創(chuàng)建項(xiàng)目分支,對(duì)一些人來(lái)說(shuō),這好像沒(méi)多大用處,但當(dāng)你突然遇到?jīng)]有

2、版本庫(kù)與工作區(qū)

2.1、Subversion的工作區(qū)和版本庫(kù)是截然分開(kāi)的

Subversion 的工作區(qū)和版本庫(kù)物理上分開(kāi):Subversion的版本庫(kù)和工作區(qū)是存儲(chǔ)在不同路徑下,一般是在不同的主機(jī)中,Subversion的企業(yè)級(jí)部署中,版本庫(kù)在服務(wù)器上,只能通過(guò) https, http, svn 等協(xié)議訪問(wèn),而不能直接被用戶(hù)接觸到。

2.2、Git的工作區(qū)和版本庫(kù)是如影隨形的。

Git 的版本庫(kù)和工作區(qū)在同一個(gè)目錄下,工作區(qū)的根目錄有一個(gè).git的子目錄,這個(gè)名為 .git的目錄就是版本庫(kù)本身,它是Git 用來(lái)保存元數(shù)據(jù)和對(duì)象數(shù)據(jù)庫(kù)的地方。該目錄非常重要,每次克隆鏡像倉(cāng)庫(kù)的時(shí)候,實(shí)際拷貝的就是這個(gè)目錄里面的數(shù)據(jù)。所以千萬(wàn)要小心刪除這個(gè)文件。

3、分支管理

3.1、SVN,分支是一個(gè)完整的目錄。且這個(gè)目錄擁有完整的實(shí)際文件。如果工作成員想要開(kāi)啟新的分支,那將會(huì)影響“全世界”!每個(gè)人都會(huì)擁有和你一樣的分支。如果你的分支是用來(lái)進(jìn)行破壞工作(安檢測(cè)試),那將會(huì)像傳染病一樣,你改一個(gè)分支,還得讓其他人重新切分支重新下載,十分狗血。

3.2、 Git,每個(gè)工作成員可以任意在自己的本地版本庫(kù)開(kāi)啟無(wú)限個(gè)分支。舉例:當(dāng)我想嘗試破壞自己的程序(安檢測(cè)試),并且想保留這些被修改的文件供日后使用, 我可以開(kāi)一個(gè)分支,做我喜歡的事。完全不需擔(dān)心妨礙其他工作成員。只要我不合并及提交到主要版本庫(kù),沒(méi)有一個(gè)工作成員會(huì)被影響。等到我不需要這個(gè)分支時(shí), 我只要把它從我的本地版本庫(kù)刪除即可。無(wú)痛無(wú)癢。

3.3、 Git里分支的切換比SVN方便很多。Git的分支名是可以使用不同名字的。例如:我的本地分支名為OK,而在主要版本庫(kù)的名字其實(shí)是master。最值得一提,我可以在Git的任意一個(gè)提交點(diǎn)(commit point)開(kāi)啟分支!所以不要吝嗇開(kāi)分支,git開(kāi)分支的代價(jià)很小。(其中一個(gè)方法是使用gitk –all 可觀察整個(gè)提交記錄,然后在任意點(diǎn)開(kāi)啟分支。)

4、權(quán)限管理

.Subversion通過(guò)對(duì)文件目錄授權(quán)來(lái)實(shí)現(xiàn)權(quán)限管理,子目錄默認(rèn)繼承父目錄的權(quán)限。但是也有缺憾,即權(quán)限不能在分支中繼承,不能對(duì)單個(gè)文件授權(quán)。例如為 /trunk及其子目錄的授權(quán),不能繼承到分支或者標(biāo)簽中相應(yīng)的目錄下。

Git 的授權(quán)做不到Subversion那樣精細(xì)。Git的授權(quán)模型只能實(shí)現(xiàn)非零即壹式的授權(quán),要么擁有全部的寫(xiě)權(quán)限,要么沒(méi)有寫(xiě)權(quán)限,要么擁有整個(gè)版本庫(kù)的讀權(quán)限,要么禁用。

5、存儲(chǔ)方式

GIT的內(nèi)容完整性要優(yōu)于SVN:GIT的內(nèi)容存儲(chǔ)使用的是SHA-1哈希算法。這能確保代碼內(nèi)容的完整性,確保在遇到磁盤(pán)故障和網(wǎng)絡(luò)問(wèn)題時(shí)降低對(duì)版本庫(kù)的破壞。


優(yōu)缺點(diǎn)比較

????????? SVN優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

1、 管理方便,邏輯明確,符合一般人思維習(xí)慣。

2、 易于管理,集中式服務(wù)器更能保證安全性。

3、 代碼一致性非常高。

4、 適合開(kāi)發(fā)人數(shù)不多的項(xiàng)目開(kāi)發(fā)。

缺點(diǎn):

1、 服務(wù)器壓力太大,數(shù)據(jù)庫(kù)容量暴增。

2、 如果不能連接到服務(wù)器上,基本上不可以工作,看上面第二步,如果服務(wù)器不能連接上,就不能提交,還原,對(duì)比等等。

3、 不適合開(kāi)源開(kāi)發(fā)(開(kāi)發(fā)人數(shù)非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明確的權(quán)限管理機(jī)制(例如分支訪問(wèn)限制),可以實(shí)現(xiàn)分層管理,從而很好的解決開(kāi)發(fā)人數(shù)眾多的問(wèn)題。


? ? ? Git優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

1、適合分布式開(kāi)發(fā),強(qiáng)調(diào)個(gè)體。

2、公共服務(wù)器壓力和數(shù)據(jù)量都不會(huì)太大。

3、速度快、靈活。

4、任意兩個(gè)開(kāi)發(fā)者之間可以很容易的解決沖突。

5、離線工作。 。

缺點(diǎn):

1、學(xué)習(xí)周期相對(duì)而言比較長(zhǎng)。

2、不符合常規(guī)思維。

3、代碼保密性差,一旦開(kāi)發(fā)者把整個(gè)庫(kù)克隆下來(lái)就可以完全公開(kāi)所有代碼和版本信息。



2.webstorm怎樣配置svn?


下載安裝sliksvn

在webstorm上配置sliksvn


輸入svn插件安裝的位置



如何checkout代碼

根據(jù)服務(wù)器情況選擇svn信息,添加好地址就可以導(dǎo)入項(xiàng)目的版本庫(kù)了。


SVN服務(wù)器地址:

如何提交代碼,



在文件上選擇右鍵在彈出來(lái)的提示框點(diǎn)擊commit,就可以看自己更

改過(guò)的文件。



五.編碼實(shí)戰(zhàn)



六.擴(kuò)展思考

SVN 和 Git 哪個(gè)更適用于項(xiàng)目管理?

SVN更適用于項(xiàng)目管理, Git僅適用于代碼管理。

一個(gè)研發(fā)隊(duì)伍的成員正常包括:需求分析、設(shè)計(jì)、美工、程序員、測(cè)試、實(shí)施、運(yùn)維,每個(gè)成員在工作中都有產(chǎn)出物,? 包括了文檔、設(shè)計(jì)代碼、程序代碼,這些都需要按項(xiàng)目集中進(jìn)行管理的。SVN能清楚的按目錄進(jìn)行分類(lèi)管理, 使項(xiàng)目組的管理處于有序高效的狀態(tài)。



七.更多討論


八.參考文獻(xiàn)

參考一:SVN和Git 介紹,區(qū)別,優(yōu)缺點(diǎn),適用范圍總結(jié)?

參考二:版本控制系統(tǒng)-集中式VS分布式

參考三:使用webstorm上傳代碼到github

參考四:為什么很多大企業(yè)都在用收費(fèi)的perforce而不是免費(fèi)的svn或者git?

參考五:Git 使用規(guī)范流程

參考六:svn老鳥(niǎo)轉(zhuǎn)用git必須理解的概念

參考七:話說(shuō)Svn與Git的區(qū)別

參考八:常見(jiàn)的版本控制管理工具


PPT連接:

ppt

視頻鏈接


svn和git有什么區(qū)別?webstorm怎樣配置svn?_騰訊視頻


如果這篇文章對(duì)你有幫助,并且使你對(duì)修真院免費(fèi)在線學(xué)習(xí)感興趣,可以通過(guò)我的鏈接注冊(cè)成員會(huì),這會(huì)使我得到學(xué)分(兌換學(xué)時(shí))延長(zhǎng)學(xué)習(xí)時(shí)間:

邀請(qǐng)鏈接:http://www.jnshu.com/login/1/13374512

邀請(qǐng)碼:13374512

最后編輯于
?著作權(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)容