天天看點

版本控制系統Git(一)——版本控制系統簡介

什麼是版本控制?

版本控制系統(Version Control System,以下簡稱VCS)就是一個用來記錄檔案變動曆史的系統,便于之後切換回去檢視你修改的曆史;

舉個最簡單的例子,我們大家寫畢業論文的時候,應該不會是一次就寫好了,中間會有修改很多次,然後每次修改你都會儲存一個修改的版本,有可能你會以修改的日期來命名,以便于在這些版本的基礎上作進一步的修改,最終完成論文的撰寫,那麼這就可以看做是最基本的本地版本控制系統;

一、本地版本控制系統

在進一步,如果在上面的論文寫作基礎上加上一個資料庫來記錄檔案的變動,那就是一個本地的版本控制系統啦,而這個工作在很久以前都被聰明的前輩發明使用了,現在還很流行呢:

版本控制系統Git(一)——版本控制系統簡介

那如果是一個人,使用這個本地的版本控制系統有一個很大的風險,就是不小心硬碟壞了,檔案丢失;

那麼如果是多個人合作呢?問題就更多了,你需要把你的檔案拷給别人,項目小不是問題,但是項目很大呢?拷貝檔案起來會很麻煩;

另外一個問題是,大項目都是分工合作,怎麼及時的知道合作夥伴的工作進度,确定其他人跟自己的工作有沒有沖突,及時的把大家的工作進行彙總,這些問題都是開發中最最常見的問題,本地的版本控制系統無法解決這些問題,是以使用起來就非常的不友善、效率低;

二、中心版本控制系統

聰明的前輩也發現了這個問題,并找到了解決辦法——中心版本控制系統,常用的CVS,Subversion和Perforce就是這一類,:

版本控制系統Git(一)——版本控制系統簡介

簡單的說,這類版本控制系統,有一個中心的伺服器來記錄整個的曆史版本中的檔案變動,用戶端可以從伺服器下載下傳某一個版本的記錄,很多年來,這是标準的做法;

它解決了很多本地VCS的問題:項目合作者、參與者知道了其他人在做什麼,而項目管理者可以控制項目的進度和項目成員的工作内容;

但是它有也很多的缺點,最明顯的就是,如果唯一的伺服器挂掉了,那麼用戶端的開發者既不能通過伺服器來跟其他開發者合作,也沒有辦法送出自己的工作;

更不幸的是,如果伺服器的檔案損壞了,并且沒有備份的話,那麼你損失會很大,幾乎是所有的曆史版本記錄都會丢失,除了用戶端下載下傳下來的那些單個版本;

三、分布式版本控制系統

是以,革命尚未成功,同志還需努力改進VCS,于是就有了現在流行的分布式版本控制系統,目前比較流行的Git就是此類:

版本控制系統Git(一)——版本控制系統簡介

這類VCS的特點就是,用戶端不僅僅擁有伺服器server最新的版本,它複制了伺服器整個倉庫;是以如果伺服器挂了,任何一個用戶端中儲存的版本都可以用來重建伺服器的倉庫。

好啦,關于版本控制系統就講這麼多了,大家應該對版本控制工具有了大概的認識,知道它的改進曆史,以及他們的特點就可以啦;

更多有關Git的部落格:

版本控制系統Git(二)——Git基礎