SVN集中式版本管理工具
SVN能干嘛?
為了能夠更好的記錄保留軟件開發(fā)過程中的迭代版本,
你每一次修改后提交的代碼,SVN服務(wù)器都為我們保留了記錄。
為了能夠更好的協(xié)同開發(fā),并有效的解決多人之間的沖突,
多個人修改一個文件,把不同的修改進行合并,這解決了我們協(xié)同開發(fā)中的一大難題。
為了能夠更便捷的異地同步代碼,
手機、平板、家里電腦、公司電腦,跟今天的云盤一個道理。
于是誕生了版本管理工具。SVN便是其中比較流行的一個工具。
這是一個集中式的版本管理,所有的數(shù)據(jù)都經(jīng)過中央服務(wù)器進行交換同步
Git 分布式版本管理工具
git能干嘛?
功能上跟SVN一樣,只不過它是分布式的,不存在中央服務(wù)器
乍看上去,好像灰常復(fù)雜,其實不然。就是說根本沒有服務(wù)器的概念,或者人人都是服務(wù)器。任意兩臺電腦都可以互相通信
但是這樣帶來一個問題,就是如果要同步代碼,至少要保證兩臺機器同時開機,所以使用git的通常做法是這樣的:
后來有了github這個神奇的網(wǎng)站,它提供24小時不間斷的服務(wù),并且在github上提交的代碼可以公開分享,來自全球的小伙伴學習別人的代碼更加的方便了,并且還是以版本管理的方式來同步代碼。于是git就瞬間流行起來了。
但是由于git復(fù)雜的原理,讓它的學習成本比svn高出了很多倍。非常不適合初學者
接下來,我嘗試用圖解的方式講解git原理,讓大家弄明白,git 為什么會看起來比SVN復(fù)雜很多卻又很受歡迎。
但不同的是,github自己編寫了一套程序接口,你可以經(jīng)過在它的網(wǎng)站上注冊,然后在github上建立屬于你自己的倉庫,然后把代碼同步過去,注意我用了同步這個詞,不是提交,因為大家一定要記住,這是分布式的!!
就是說github只是眾多客戶端之一(雖然它有點特殊),這里沒有服務(wù)器和客戶端的概念。
(請注意,git是一個分布式版本管理軟件,github是一個網(wǎng)站平臺,請不要把二者混為一談)
這樣一來,大家就可以直接從github上下載,修改后都向github上面提交,就方便多了
講到這里,你一定會有疑問,這跟SVN有什么區(qū)別?SVN貌似不用這么折騰吧?
第1,這跟SVN確實沒什么區(qū)別。
但是,如果github網(wǎng)站掛掉了,張三、李四、王五仍然可以直接互相同步代碼,SVN做的到嗎?
第二,這個要重點說,git不單單只有這一點好處,更大的好處,在于它和SVN有著不同的管理文件的方式。
一個軟件從建立,到zui后發(fā)布上線,如果把每一次提交都算上,你覺得它大概要經(jīng)歷幾萬個版本?
我們都知道版本管理zui大的好處就是可以保留我們的歷史版本,在代碼開發(fā)到一半的時候,不至于無故丟失,還可以查看BUG的來龍去脈。
那怎么樣做到這一點呢?
如果每一次修改,都保留一個文件副本,那需要多少硬盤才能裝的下?
SVN是集中式管理,大家把文件都提交到一個地方,這服務(wù)器的存儲壓力就大了去了。
因此它對于文件的版本控制,采用增量式的,只記錄修改部分,不產(chǎn)生多余的數(shù)據(jù)。
但是要知道,只記錄修改,不產(chǎn)生冗余,還得準確的還原每一個版本,解決沖突,可真不是一件容易的事情
所以你就明白,為什么到現(xiàn)在SVN還是動不動一個誤操作就出現(xiàn)無法提交的錯誤,BUG滿天飛。
我們不得不說,SVN是一個非常優(yōu)秀的版本管理軟件,如果它早一點發(fā)明分支結(jié)構(gòu),如果在github之前就出現(xiàn)了svnhub,也許.....
算了,不提往事了,接下來再說git管理文件的方式。
Git以文件快照的方式保存,也就是說,每一個版本,就是一個文件副本
當然,對于沒有變動的提交,git會自動生成一個虛的索引,就像快捷方式,以便節(jié)省空間,
但即便是這樣,你肯定還是覺得,這種做法太浪費空間了。所以才發(fā)明了分支(fork)
我們還拿github舉例子,現(xiàn)在它既然要變成一個類似服務(wù)器的角色,為所有人提供代碼托管。
那如何來解決如此大量的冗余呢? 那就是想辦法把冗余放到本地。
首先,我們從github上的項目克隆一份到我們本地,
我們把github上的項目稱為主干,我們自己的稱為分支,我們的修改只提交在本地。
等到版本穩(wěn)定的時候,或者我負責的模塊開發(fā)完成了,再把zui后的版本提交到遠程倉庫。
這個過程稱為分支的合并
當然,能不能合并,還得創(chuàng)建項目的人說了算。
試想一下,你發(fā)起了一個開源項目1.0,無數(shù)的人來幫你續(xù)寫2.0版本,并向你發(fā)送了合并申請。
你挨個審查,挑了一個優(yōu)秀的合并到你的項目中,豈不是很爽?
關(guān)于HTML5培訓,千鋒互聯(lián)是認真的! >> http://kaoshi.china.com/xuexiao/bjqf/
課程咨詢
咨詢老師:金老師
咨詢電話:010-64707530/15110074071