在開發中 git 是最經常使用的版本控制軟件,在學習極客時間蘇玲的《玩轉 git 三劍客》前,對 git 的使用只停留在add
,commit
,pull
,push
上,稍微複雜點的checkout
就不會使用了。在一次項目中,用到了merge
,讓我對git
充滿了好奇,正好這時極客時間推出了 git 的課程, 我堅決果斷的購買了。linux
雖然 git 已經爛大街了,再寫關於 git 的文章也沒什麼價值了,但我仍是要本身寫點文章,一方面記錄本身學習的心得,另外一封面,也鍛鍊下本身的寫做能力,吳軍老師說過:要想讓一我的會說,邏輯清晰,首先得會寫。不少人肚子裏有東西,可是說不出來,表達的別人看不懂,聽者看來,和沒有沒太大區別。因此這也是鍛鍊本身的方式。git
版本控制可以追蹤工程藍圖從誕生一直到定案的過程,確保由不一樣人員所編輯的程序文件都能獲得同步。服務器
最簡單的版本控制是 copy 多份項目,並進行適當的編號,這種方法高度依賴開發者的自我紀律,很容易致使錯誤。
所以自動化的版本控制系統應運而生。分佈式
大部分版本控制軟件都採用差分編碼,只保留文件相繼版本之間的差別,減小存儲空間。性能
一個項目中有好幾給開發人員同時參與,若是兩我的同時改變一個文件,而沒有管理訪問權限,就會形成代碼衝突。
因此有兩種方法:一、中央式系統,由中央管理訪問權限;二、分佈式系統,能夠同時允許多個單位同時進行。學習
在版本控制系統出來以前是怎麼開發的呢?編碼
因此溝通成本很是高,項目集成效率低下。版本控制
以目錄形式區別不一樣版本的形式不只僅是過去,如今還存在,固然時代在發展,在這幾十年當中有不少版本控制系統走入了咱們世界,其中像 cvs 和 vsn 這種集中式的控制系統,他曾經被不少團隊和公司所接受。code
優勢:這些特徵使得集中式的版本控制系統,比起以前沒有版本控制的項目,它的效率在集成方面是有明顯的提升的。
缺點:客戶端必須時刻和服務器相連,由於客戶端不具有服務器端同樣的目錄結構。開發
有不少人認爲,集中式的版本控制系統在速度上和性能上是不足的。後來基於集中式的版本控制系統的不足,開發了分佈式的版本控制系統。
它們最大的區別是,服務端和客戶端都有完整的版本庫,脫離服務端,客戶端照樣能夠管理版本,查看歷史和版本比較等多數操做,都不須要訪問服務器,比集中式的VCS更能提升版本管理的效率。
以上參考資料來自:維基百科 和 蘇玲《玩轉 git 三劍客》第一講