版本控制

在開發中 git 是最經常使用的版本控制軟件,在學習極客時間蘇玲的《玩轉 git 三劍客》前,對 git 的使用只停留在addcommitpullpush上,稍微複雜點的checkout就不會使用了。在一次項目中,用到了merge,讓我對git充滿了好奇,正好這時極客時間推出了 git 的課程, 我堅決果斷的購買了。linux

雖然 git 已經爛大街了,再寫關於 git 的文章也沒什麼價值了,但我仍是要本身寫點文章,一方面記錄本身學習的心得,另外一封面,也鍛鍊下本身的寫做能力,吳軍老師說過:要想讓一我的會說,邏輯清晰,首先得會寫。不少人肚子裏有東西,可是說不出來,表達的別人看不懂,聽者看來,和沒有沒太大區別。因此這也是鍛鍊本身的方式。git

什麼是版本控制

版本控制可以追蹤工程藍圖從誕生一直到定案的過程,確保由不一樣人員所編輯的程序文件都能獲得同步。服務器

最簡單的版本控制是 copy 多份項目,並進行適當的編號,這種方法高度依賴開發者的自我紀律,很容易致使錯誤。
所以自動化的版本控制系統應運而生。分佈式

大部分版本控制軟件都採用差分編碼,只保留文件相繼版本之間的差別,減小存儲空間。性能

中央式系統和分佈式系統

一個項目中有好幾給開發人員同時參與,若是兩我的同時改變一個文件,而沒有管理訪問權限,就會形成代碼衝突。
因此有兩種方法:一、中央式系統,由中央管理訪問權限;二、分佈式系統,能夠同時允許多個單位同時進行。學習

版本控制系統演變歷史

在版本控制系統出來以前是怎麼開發的呢?編碼

  1. 在服務器上面將文件共享出來,各自建個文件夾,以目錄拷貝的方式來區分不一樣的人開發的東西;
  2. 本身開發的東西也經過這種文件夾的形式標出1.0、2.0、3.0;
  3. 這種方法你們開發的公共文件是很容易被覆蓋的,
  4. 還有我在開發的時候,我得不停的跟人家說,我在開發這個,大家先別動,

因此溝通成本很是高,項目集成效率低下。版本控制

以目錄形式區別不一樣版本的形式不只僅是過去,如今還存在,固然時代在發展,在這幾十年當中有不少版本控制系統走入了咱們世界,其中像 cvs 和 vsn 這種集中式的控制系統,他曾經被不少團隊和公司所接受。code

集中式的版本控制系統,它有什麼樣的特徵呢?

  1. 有集中的版本管理服務器,這個服務器存放了每一個文件或者文件夾的演變歷史。也就是,哪天你本地沒有這個項目,你去服務器取也是很是容易的。提供了歷史版本的搜索能力,以及不一樣版本之間比較的能力。
  2. 具有文件版本管理和分支管理能力。可讓不一樣的分支作集成,

優勢:這些特徵使得集中式的版本控制系統,比起以前沒有版本控制的項目,它的效率在集成方面是有明顯的提升的。
缺點:客戶端必須時刻和服務器相連,由於客戶端不具有服務器端同樣的目錄結構。開發

有不少人認爲,集中式的版本控制系統在速度上和性能上是不足的。後來基於集中式的版本控制系統的不足,開發了分佈式的版本控制系統。

它們最大的區別是,服務端和客戶端都有完整的版本庫,脫離服務端,客戶端照樣能夠管理版本,查看歷史和版本比較等多數操做,都不須要訪問服務器,比集中式的VCS更能提升版本管理的效率。

git 特色

  1. 最優的存儲能力
  2. 非凡的性能,得益於林納斯是很是有喜的linux內核專家以及文件系統管理專家
  3. 開源的
  4. 很容易作備份,支持離線操做
  5. 很容易定製工做流程

一個學習 git 的網址

以上參考資料來自:維基百科 和 蘇玲《玩轉 git 三劍客》第一講

相關文章
相關標籤/搜索