現(xiàn)在最高效的版本控制工具是什么?你最喜歡使用的版本控制工具是什么?
毫無疑問,Git是首選。本人從15年開始,無論是工作還是日常使用,均已全面轉(zhuǎn)向Git。
前言
版本控制系統(tǒng)(Version Control System)是一個可以記錄單個或一系列文件在不同時間發(fā)生的變化的系統(tǒng),版本控制系統(tǒng)操作的文件可以是計算機(jī)上任意文件。
通過該系統(tǒng),我們可以在之后將文件恢復(fù)到發(fā)生某次改變前的狀態(tài);可以找回刪除的文件;可以比較不同時間文件的差別;可以查看每一次修改的相關(guān)信息。
歷史
原始的版本控制
版本控制的需求一直存在,在版本控制工具出現(xiàn)之前,人們通常通過將文件拷貝到另外的目錄進(jìn)行版本備份,這是最簡單但也是很不穩(wěn)定的方法,比如,我們有可能忘記或者修改錯誤文件,這時候是無法找回之前文件的;而且不定時的拷貝文件是件極其乏味的事情,同時隨著文件越來越多,其拷貝一次的耗費時間也越來越長。
本地版本控制(Local Version Control System)
為了解決原始的版本控制諸多問題,程序員們在很久以前就開發(fā)了一個本地版本控制系統(tǒng),該系統(tǒng)使用一個小型數(shù)據(jù)庫保存所有的文件變化。

集中版本控制系統(tǒng)(Centralized Version Control System)
使用版本控制系統(tǒng)的遇到的一個主要問題是如何與其他開發(fā)者合作。為了解決這個問題,開發(fā)者們開發(fā)了集中版本控制系統(tǒng)(CVCS)。
這類版本控制系統(tǒng),如CVS,Subversion和Perforce使用一個單獨的服務(wù)器,保存所有的文件版本,所有的客戶端都從這里檢出(check out)文件。
這種方式流行了很多年,至今還是有很多個人或企業(yè)使用。

這類系統(tǒng)對比本地版本控制系統(tǒng)有很多優(yōu)勢,諸如:
- 開發(fā)者之間可以了解不同的開發(fā)進(jìn)度;
- 管理員可以細(xì)粒度的控制哪些開發(fā)者可以擁有哪些權(quán)限;
- 相對于在每個客戶端都安裝配置本地數(shù)據(jù)庫,只需要集中管理一個控制中心。
當(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)最新版本文件,而是克隆出整個代碼庫,即使服務(wù)器出問題了,我們也能從客戶端找回文件,而且每個客戶端依然可以在本地進(jìn)行版本控制,等待服務(wù)器修復(fù)后,再上傳。

實踐證明,DVCS在處理不同開發(fā)者同時合作一個或多個項目時表現(xiàn)很好,最典型的就是Git了。
Git
自誕生以來,引起過很多爭議,但這并不影響開發(fā)者們對Git的青睞,一個好的分布式版本控制系統(tǒng)優(yōu)化方向主要從以下幾點著手,就像Git一樣:
- 速度(Speed)
- 簡單 (Simple Design)
- 平行式開發(fā)(parallel development)
- 完全分布式(Fully distributed)
- 穩(wěn)定高效(efficient)
自從2005年推出以來,Git已經(jīng)成長為一個簡單易用,穩(wěn)定高效(尤其在處理大型項目上的表現(xiàn)),支持多分支平行開發(fā)的版本控制系統(tǒng)。
關(guān)于版本控制系統(tǒng)及Git的特性,已經(jīng)略有所知,接下來是時候進(jìn)入主題:Git由淺入深。
圖片來源git-scm
更多請查閱https://git-scm.com/doc