1 沒有版本控制時的問題如果我們沒有對編寫的代碼進(jìn)行版本控制,那么會出現(xiàn)以下幾個問題: 需要手動備份不同版本的代碼,,浪費(fèi)時間和空間,。 難以恢復(fù)至以前的正確版本。例如:我上周寫的代碼是對的,,這周改出問題了,,但是沒有對上周寫的進(jìn)行備份,如果想恢復(fù)到上周寫的樣子,,那就得重新寫一遍,。 代碼整合過程需要人工拷貝,再復(fù)制和粘貼,,極其繁瑣,。 修復(fù)Bug困難。例如:現(xiàn)在需要整合代碼,,大家都紛紛開始復(fù)制和粘貼代碼,,所有人都把自己寫的代碼放在前面,別人寫的代碼放在后面,。如果合并的代碼出現(xiàn)了沖突,,有人說第100行代碼有運(yùn)行時錯誤需要修改,那么問題來了,,每個人的第100行代碼都不同,,修改代碼的過程變得困難。 難以追溯問題代碼的修改人和修改時間,,如果不寫注釋的話,。 代碼管理混亂,項目版本發(fā)布困難,。要想開發(fā)一個產(chǎn)品,,如果每個人手上的代碼都不一樣,那么就需要花費(fèi)時間來討論一個問題:到底用誰的代碼去發(fā)布成產(chǎn)品,。
2 版本控制工具目前主要有三種版本控制工具,,分別是CVS、SVN和Git,。因為CVS已經(jīng)過時,所以在這里只介紹SVN和Git,。 2.1 SVNSVN(Subversion)是一個集中式的版本控制工具,。
開發(fā)人員使用SVN工作時的流程圖: 01-SVN工作流程圖.png SVN的特點(diǎn):使用統(tǒng)一的中央倉庫對文件進(jìn)行集中式的管理,。 SVN的優(yōu)點(diǎn): 操作簡單,學(xué)習(xí)成本低,。 能對文件進(jìn)行權(quán)限控制,。
SVN的缺點(diǎn):在沒有網(wǎng)絡(luò)的情況下就不能對文件進(jìn)行版本控制操作。 SVN的適用場景:有權(quán)限控制的代碼開發(fā)(即不是每個人都可以看到項目中的所有代碼)和軟件文檔的管理,。 2.2 GitGit是一個分布式的版本控制工具,。
開發(fā)人員使用Git工作時的流程圖: 02-Git工作流程圖.png Git的特點(diǎn):既能集中式又能分布式地管理文件。Git的集中式管理模式和SVN的一樣,,它的分布式管理模式是每個開發(fā)人員都要自己維護(hù)一個與中央倉庫關(guān)聯(lián)的本地倉庫,。 Git的優(yōu)點(diǎn): 分布式管理,數(shù)據(jù)不易丟失,。因為每個客戶端上都持有一個與中央倉庫一樣的本地倉庫,,所以當(dāng)中央倉庫的數(shù)據(jù)丟失時,可以從任意一個客戶端上獲取數(shù)據(jù)進(jìn)行恢復(fù),。 支持離線版本控制,。在沒有網(wǎng)絡(luò)的時候,開發(fā)人員可以使用本地倉庫進(jìn)行版本控制操作,,待有網(wǎng)后,,再將改變的內(nèi)容推送到中央服務(wù)器。 支持現(xiàn)場版本控制,。例如:產(chǎn)品部署在客戶那邊,,出了Bug,需要去現(xiàn)場進(jìn)行修復(fù),。如果我們使用的是SVN,,我們需要將修改完的代碼拷貝回來,然后復(fù)制粘貼進(jìn)工程,,最后再與SVN進(jìn)行同步,。反之,如果我們使用的是Git,,我們只需要在工程的目錄下初始化Git,,然后修正Bug,最后再打個補(bǔ)丁把補(bǔ)丁帶回去就行了,。 服務(wù)器壓力小,。因為使用SVN的開發(fā)人員會一直連著服務(wù)器進(jìn)行操作,但是使用Git的開發(fā)人員可能是一周甚至一個月才與服務(wù)器進(jìn)行交互,,所以SVN服務(wù)器承受的訪問量與數(shù)據(jù)量要比Git服務(wù)器大很多,。 支持補(bǔ)丁技術(shù)。任意兩個開發(fā)人員可以通過補(bǔ)丁來整合代碼,,整合過程不通過中央服務(wù)器,。 Git的響應(yīng)速度比SVN快,。
Git的缺點(diǎn): 學(xué)習(xí)成本高。因為需要學(xué)習(xí)很多的操作指令,。 不能對文件進(jìn)行權(quán)限控制,。因為Git使用分布式管理,所以每個客戶端就會持有與中央服務(wù)器一樣的倉庫,,擁有了一樣的倉庫就擁有了中央倉庫上所有的代碼,。
Git的適用場景:無權(quán)限控制的代碼開發(fā)。
本文轉(zhuǎn)自:簡書 微信號:IdeaofSE
|