20150821 [學習筆記] Git 版本控制(1) 
(一)版本控制的緣由與概念
  • 當軟體工程師開發大型專案時,為了方便掌握專案開發情形以及在任何情況下都能夠回顧每個階段的設計版本,而使用的一種軟體工程技巧。
 
 
(二)版本控制的類型 (整理自 "Git - 關於版本控制" & "從集中版本控制到分散式版本控制" )
  • 1.  本地端版本控制
  • 特點: 具有簡單的資料庫,用來記載檔案的所有變更記錄。(在同一台主機上)
  • 可同步: 讓所有開發者所做的變更能夠同步,最終得到相同的版本內容。
  • 可追溯: 能夠回顧開發過程所有時期的版本。
  • 可備份: 將所有檔案集中於檔案庫中,利於備份所有時期的版本。
  • 舉例: 
  • (1) The Revision Control System (RCS)
 
  • 2.  集中式版本控制系統 (CVCS: Centralized Version Control Systems)
  • 特點:
  • 保持同步: 開發者之間保持資料同步的狀態。
  • 方便管理: 檔案庫管理員可自由調整各個使用者的存取權限。
  • 維護容易:  集中式版本控制系統較散落在各使用者端的本地端資料庫來的容易維護。
  • ---------------------------------------------------------------------------------------------------------------------
  • 需線上作業: 開發者想要對檔案庫中的檔案進行操作,都必須在能夠連網的環境下進行(由於是集中控管,因此資料都集中在某一部能連網的遠端主機上)。
  • 有風險:  如果伺服器用來儲存資料庫的硬碟損毀,專案開發的所有資訊都會遺失。
  • 舉例:
  • (1) Subversion (SVN)
  • (2) Team Foundation Version Control (TFVC)
 
  • 3.  分散式版本控制系統 (DVCS: Distributed Version Control System) :+1: 
  • 特點:
  • 完整的內容: 每一次的取出動作實際上就是完整備份整個儲存庫。 即使是整個系統損毀,也可將先前複製的資料還原到伺服器。 
  • 可離線作業: 對版本控制系統的操作,都可以直接在本機端的檔案庫中進行,包括提交、分支、等等的操作。
  • 版本獨立: 每個開發者可以擁有各自設計的專案版本,也可以互相分享。
 
  • 集中式 Versus 分散式:
  • 分散式版本控管系統相較於集中式版本控管系統有以下優勢:
  • (1) 支援本地操作
  • (2)資料備份容易
  • (3)功能強大
  • (4)能夠彈性的進行版本上的分支與合併
  • ......
  • 舉例:
  1. Git
  1. Mecurial