關於版本控制
什麼是版本控制?版本控制是一種記錄一個或若干文件內容變化,以便未來查閱特定版本修訂狀況的系統。在本書所展現的例子中,咱們僅對保存着軟件源代碼的文本文件做版本控制管理,但實際上,你能夠對任何類型的文件進行版本控制。數據庫
Git:分佈式版本控制體統,安全
是一款免費、開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目。服務器
Git的功能特性:分佈式
![](http://static.javashuo.com/static/loading.gif)
一、從服務器上克隆完整的Git倉庫(包括代碼和版本信息)到本身電腦上。
二、在本身的電腦上根據不一樣的開發目的,建立分支,修改增刪代碼。
三、在本身的電腦裏,本身建立的Git分支上提交代碼,提交到本身本地的Git倉庫;
四、在電腦上合併分支。
五、推送到本身的服務器,(沒有完成,不想讓別人知道的前提下!)
六、推送到公用服務器上,(已完成!)
七、看主開發者的反饋,若是主開發者發現兩個通常開發者之間有衝突(他們之間能夠合做解決的衝突),就會要求他們先解決衝突,而後再由其中一我的提交。若是主開發者能夠本身解決,或者沒有衝突,就經過。
《天天修改的時候記得在主服務器上獲取一下最新的版本,以防衝突》
優勢:
適合分佈式開發,強調個體。
公共服務器壓力和數據量都不會太大。
速度快、靈活。
任意兩個開發者之間能夠很容易的解決衝突。
離線工做。
缺點:
學習週期相對而言比較長。
不符合常規思惟。
較複雜
SVN是集中式版本控制系統,
說得簡單一點SVN就是用於多我的共同開發同一個項目,共用資源的目的。
集中式管理的工做流程以下圖:
集中式代碼管理的核心是服務器,全部開發者在開始新一天的工做以前必須從服務器獲取代碼,而後開發,最後解決衝突,提交。全部的版本信息都放在服務器上。若是脫離了服務器,開發者基本上能夠說是沒法工做的。
一、從服務器下載項目組最新代碼。
二、進入本身的分支,進行工做,每隔一個小時向服務器本身的分支提交一次代碼(不少人都有這個習慣。由於有時候本身對代碼改來改去,最後又想還原到前一個小時的版本,或者看看前一個小時本身修改了哪些代碼,就須要這樣作了)。
三、最後,把本身的分支合併到服務器主分支上,一天的工做完成,並反映給服務器。
這就是經典的svn工做流程,從流程上看,有很多缺點,但也有優勢。
優勢:
一、管理方便,邏輯明確,符合通常人思惟習慣。
二、易於管理,集中式服務器更能保證安全性。
三、適合開發人數很少的項目開發。
四、相對簡單,好操做。
缺點:
一、服務器壓力太大,數據庫容量暴增。
二、若是不能鏈接到服務器上,基本上不能夠工做,
三、若是服務器不能鏈接上,就不能提交,還原,對比。
三、不適合開源開發。可是通常集中式管理的有很是明確的權限管理機制(例如分支訪問限制),能夠實現分層管理,從而很好的解決開發人數衆多的問題。
PS:昨天晚上研究了大半夜的成果!