版本控制是指對軟件開發(fā)過程中各種程序代碼、配置文件及說明文檔等文件變更的管理,是軟件配置管理的核心思想之一。
編寫一個成熟可用的程序是一個工作量很大的工程,并非我們一次性就可以搞定的工作,所以在開發(fā)過程當(dāng)中需要:
1、 多人協(xié)作
隨著對程序體驗的需求的提高,一個程序需求的編程知識和模塊也在增多,這種情況下讓一個程序員同時掌握多門技術(shù)是不好實現(xiàn)的:
1、掌握的難度大,開發(fā)的成本高(比如:一個大牛的工資)
2、開發(fā)效率高,一個人開發(fā)的效率是不行的
所以,我們在工作當(dāng)中大部分講究的是協(xié)作開發(fā),我們以項目需求的技術(shù)模塊進(jìn)行團(tuán)隊的組合。
比如:開發(fā)一個web項目:如果要招聘一個web大牛,前端、后端、運維服務(wù)器都很牛的大牛,薪資高先不說,人也不好找啊。并且一個大牛的開發(fā)效率
和開發(fā)壓力也很大。所以我們會形成一個開發(fā)的團(tuán)隊,找前端開發(fā)工程師,后端開發(fā)工程師,運維工程師,數(shù)據(jù)庫工程師來完成這個艱巨的任務(wù)。
2、 版本迭代
就好像一個美術(shù)家要完成一件作品,并不是一蹴而就的,好多時候是經(jīng)歷過多次修改的過程,我們編程也是一樣的,當(dāng)然這個修改要有原則,并不是推
倒重來的過程(當(dāng)然前期無藥可救的不算),而是有簡單的一個完整的框架開始,然后不斷優(yōu)化升級的過程,這個過程就是版本迭代。
那在這個過程當(dāng)中,我們需要對代碼進(jìn)行管理,比如:提交、檢出、回溯歷史、沖突解決、多人協(xié)作。那這些需求也就衍生出了我們要學(xué)習(xí)使用的版本控制工具。
各個公司由于開發(fā)的需求和其他因素用到的版本控制工具不都相同,這里我們介紹幾種使用較多的版本控制工具。
Cvs: 是一個C/S系統(tǒng),是一個常用的代碼版本控制軟件。主要在開源軟件管理中使用。多個開發(fā)人員通過一個中心版本控制系統(tǒng)來記錄文件版本,從而達(dá)到
保證文件同步的目的。是一種很古老的版本控制工具了,但是是很典型的集中式版本控制工具
SVN: 是一個開放源代碼的版本控制系統(tǒng),相較于RCS、CVS,它采用了分支管理系統(tǒng),它的設(shè)計目標(biāo)就是取代CVS??梢哉f是集中式版本控制的集大成 者。
Git: 是一個開源的分布式版本控制系統(tǒng),可以有效、高速的處理從很小到非常大的項目版本管理。是一種分布式的版本控制工具
GitHub:gitHub是一個面向開源及私有軟件項目的托管平臺,因為只支持git 作為唯一的版本庫格式進(jìn)行托管,故名gitHub。
上面介紹了我們常用的四種版本控制軟件,但是也要給大家解釋兩個概念:
分布式版本控制:分布式的版本控制就是每個人都可以創(chuàng)建一個獨立的代碼倉庫用于管理,各種版本控制的操作都可以在本地完成。每個人修改的代碼都可以推
送合并到另外一個代碼倉庫中。
集中式版本控制:只有一個中央控制,所有的開發(fā)人員都必須依賴于這個代碼倉庫。每次版本控制的操作也必須鏈接到服務(wù)器才能完成。
所以很多公司喜歡用集中式的版本控制是為了更好的控制代碼。如果個人開發(fā),就可以選擇Git這種分布式的。并不存在那個更加好或者其他的。