SVN與GIT的區(qū)別
- 概念
SVN:集中化的版本控制系統(tǒng)
GIT:分布式版本控制系統(tǒng)
集中化的系統(tǒng),受限于服務(wù)器栅屏,比如:提交記錄窃款,如果我離線的話骚勘,提交記錄是看不到的;代碼更改哄芜,我想查看每次提交的更改也很困難;
文件記錄方式
SVN:記錄每個(gè)文件的變化,每個(gè)版本存儲(chǔ)前后變化的差異數(shù)據(jù)
GIT:記錄整體數(shù)據(jù)的變化族阅,每次提交,把所有文件生成一個(gè)快照膝捞,和前面一次提交對(duì)比坦刀,若文件沒(méi)變化,直接指向上一次文件绑警,只記錄變化的文件分支的創(chuàng)建和合并
SVN:每次分支都是對(duì)之前代碼重新拷貝到一個(gè)新目錄
GIT:分支的創(chuàng)建和合并代價(jià)很小求泰,十分方便
很明顯的一個(gè)地方是文件的大小,SVN有幾個(gè)分支计盒,大小就增加幾倍渴频,而git使用指針記錄每次提交的,分支的創(chuàng)建和合并其實(shí)就是對(duì)指針的操作北启,效率可見(jiàn)一斑
對(duì)GIT的一些誤區(qū)
- git≠github
git是分布式的版本控制系統(tǒng)
github是一個(gè)托管git庫(kù)的網(wǎng)站卜朗,使用git作為代碼版本管理工具,github是全球最大的代碼開源網(wǎng)站,上面的大部分git庫(kù)都是公開(public)的咕村,就是所有人都可以訪問(wèn)场钉,也有私有庫(kù)(private),只有擁有權(quán)限的人才可以訪問(wèn)
gitlab是一個(gè)用于倉(cāng)庫(kù)管理系統(tǒng)的開源項(xiàng)目,可以理解成和github是一樣的懈涛,提供web界面管理git倉(cāng)庫(kù)逛万,但是可以搭建在私有服務(wù)器上,保證代碼安全
- git不慢
感覺(jué)大部分人都覺(jué)的git很慢批钠,這是一個(gè)很大的誤區(qū)宇植,可能是大部分人剛開始都是通過(guò)github接觸git的得封,github的服務(wù)器在國(guó)外,而且我大天朝的網(wǎng)絡(luò)環(huán)境指郁,大家都懂的忙上,其實(shí)從上面對(duì)git和svn實(shí)現(xiàn)原理的比較,顯然git比svn快闲坎,如果我們都用內(nèi)網(wǎng)的git服務(wù)疫粥,就不會(huì)感覺(jué)git慢了
- 覺(jué)得git麻煩
可能是大部分人一接觸git,需要一大堆配置就覺(jué)得麻煩腰懂,所以要給大家講明白為什么需要這些配置梗逮,git使用的ssh協(xié)議(http也支持),ssh通過(guò)公私玥來(lái)加密數(shù)據(jù)悯恍,所以一開始會(huì)讓大家生成一個(gè)公鑰并上傳到網(wǎng)站上库糠,為了標(biāo)明每次commit是誰(shuí)提交的,會(huì)配置開發(fā)者的一些基本信息
- git和svn一樣簡(jiǎn)單易上手
為什么這么說(shuō)呢涮毫,因?yàn)閺谋举|(zhì)上來(lái)說(shuō)瞬欧,都是版本管理系統(tǒng),我們從常用的幾個(gè)操作來(lái)說(shuō):
操作 | svn | git |
---|---|---|
從服務(wù)器拉工程 | check out | clone |
提交 | commit | commit->push |
更新 | update | pull |
可以發(fā)現(xiàn)步驟基本是一樣的
為什么使用GIT?
- 為了裝逼罢防?
- 因?yàn)閯e人用艘虎,所以我們也用?
肯定不是這些原因咒吐,使用git是為了:
- 提高開發(fā)效率!
git不僅僅是一個(gè)代碼版本管理工具野建,也是一個(gè)文檔管理工具,在git上很容易維護(hù)一個(gè)文檔
git可以提高開發(fā)效率恬叹,主要表現(xiàn)在:
- 合并對(duì)提交過(guò)程的保留
- 修正提交
- 廉價(jià)好用的本地分支
- 更強(qiáng)大智能的合并能力
- 完整配套的開發(fā)過(guò)程設(shè)施(wiki issue 功能大贊候生!)
- 查看日志