現(xiàn)在最高效的版本控制工具是什么悯周?你最喜歡使用的版本控制工具是什么?
毫無疑問陪竿,Git是首選禽翼。本人從15年開始,無論是工作還是日常使用,均已全面轉(zhuǎn)向Git闰挡。
前言
版本控制系統(tǒng)(Version Control System)是一個(gè)可以記錄單個(gè)或一系列文件在不同時(shí)間發(fā)生的變化的系統(tǒng)锐墙,版本控制系統(tǒng)操作的文件可以是計(jì)算機(jī)上任意文件。
通過該系統(tǒng)长酗,我們可以在之后將文件恢復(fù)到發(fā)生某次改變前的狀態(tài)溪北;可以找回刪除的文件;可以比較不同時(shí)間文件的差別花枫;可以查看每一次修改的相關(guān)信息刻盐。
歷史
原始的版本控制
版本控制的需求一直存在,在版本控制工具出現(xiàn)之前劳翰,人們通常通過將文件拷貝到另外的目錄進(jìn)行版本備份敦锌,這是最簡單但也是很不穩(wěn)定的方法,比如佳簸,我們有可能忘記或者修改錯(cuò)誤文件乙墙,這時(shí)候是無法找回之前文件的;而且不定時(shí)的拷貝文件是件極其乏味的事情生均,同時(shí)隨著文件越來越多听想,其拷貝一次的耗費(fèi)時(shí)間也越來越長。
本地版本控制(Local Version Control System)
為了解決原始的版本控制諸多問題马胧,程序員們在很久以前就開發(fā)了一個(gè)本地版本控制系統(tǒng)汉买,該系統(tǒng)使用一個(gè)小型數(shù)據(jù)庫保存所有的文件變化。
集中版本控制系統(tǒng)(Centralized Version Control System)
使用版本控制系統(tǒng)的遇到的一個(gè)主要問題是如何與其他開發(fā)者合作佩脊。為了解決這個(gè)問題蛙粘,開發(fā)者們開發(fā)了集中版本控制系統(tǒng)(CVCS)。
這類版本控制系統(tǒng)威彰,如CVS,Subversion和Perforce使用一個(gè)單獨(dú)的服務(wù)器出牧,保存所有的文件版本,所有的客戶端都從這里檢出(check out)文件歇盼。
這種方式流行了很多年舔痕,至今還是有很多個(gè)人或企業(yè)使用。
這類系統(tǒng)對比本地版本控制系統(tǒng)有很多優(yōu)勢豹缀,諸如:
- 開發(fā)者之間可以了解不同的開發(fā)進(jìn)度伯复;
- 管理員可以細(xì)粒度的控制哪些開發(fā)者可以擁有哪些權(quán)限;
- 相對于在每個(gè)客戶端都安裝配置本地?cái)?shù)據(jù)庫邢笙,只需要集中管理一個(gè)控制中心啸如。
當(dāng)然,沒有什么是絕對完美的鸣剪,CVCS也有很多問題组底,
- 最突出的問題就是,由于集中控制筐骇,一旦控制中心癱瘓债鸡,所有開發(fā)者開發(fā)進(jìn)程都會受影響;
- 一旦控制中心服務(wù)器文件丟失铛纬,且沒有備份厌均,我們無法找回(除非在某客戶端本地恰好還保存著未刪除);
針對這類問題告唆,后來有了分布式版本控制系統(tǒng)棺弊。
分布式版本控制系統(tǒng)(Distributed Version Control System)
對于分布式版本控制系統(tǒng)(DVCS),如Git,Mercurial,Darcs擒悬,客戶端不是只從服務(wù)器檢出(check out)最新版本文件模她,而是克隆出整個(gè)代碼庫,即使服務(wù)器出問題了懂牧,我們也能從客戶端找回文件侈净,而且每個(gè)客戶端依然可以在本地進(jìn)行版本控制,等待服務(wù)器修復(fù)后僧凤,再上傳畜侦。
實(shí)踐證明,DVCS在處理不同開發(fā)者同時(shí)合作一個(gè)或多個(gè)項(xiàng)目時(shí)表現(xiàn)很好躯保,最典型的就是Git了旋膳。
Git
自誕生以來,引起過很多爭議途事,但這并不影響開發(fā)者們對Git的青睞验懊,一個(gè)好的分布式版本控制系統(tǒng)優(yōu)化方向主要從以下幾點(diǎn)著手,就像Git一樣:
- 速度(Speed)
- 簡單 (Simple Design)
- 平行式開發(fā)(parallel development)
- 完全分布式(Fully distributed)
- 穩(wěn)定高效(efficient)
自從2005年推出以來盯孙,Git已經(jīng)成長為一個(gè)簡單易用鲁森,穩(wěn)定高效(尤其在處理大型項(xiàng)目上的表現(xiàn)),支持多分支平行開發(fā)的版本控制系統(tǒng)振惰。
關(guān)于版本控制系統(tǒng)及Git的特性歌溉,已經(jīng)略有所知,接下來是時(shí)候進(jìn)入主題:Git由淺入深骑晶。
圖片來源git-scm更多請查閱https://git-scm.com/doc
來源:驚鴻三世的博客
作者:驚鴻三世(轉(zhuǎn)載已獲得作者許可痛垛,如需轉(zhuǎn)載請與原作者聯(lián)系)
更多干貨請關(guān)注:極樂科技