SVN與GIT的區(qū)別
- 概念
SVN:集中化的版本控制系統(tǒng)
GIT:分布式版本控制系統(tǒng)
集中化的系統(tǒng),受限于服務器,比如:提交記錄莱睁,如果我離線的話,提交記錄是看不到的隙笆;代碼更改,我想查看每次提交的更改也很困難;
文件記錄方式
SVN:記錄每個文件的變化褂始,每個版本存儲前后變化的差異數(shù)據(jù)
GIT:記錄整體數(shù)據(jù)的變化,每次提交描函,把所有文件生成一個快照崎苗,和前面一次提交對比,若文件沒變化舀寓,直接指向上一次文件胆数,只記錄變化的文件分支的創(chuàng)建和合并
SVN:每次分支都是對之前代碼重新拷貝到一個新目錄
GIT:分支的創(chuàng)建和合并代價很小,十分方便
很明顯的一個地方是文件的大小互墓,SVN有幾個分支幅慌,大小就增加幾倍,而git使用指針記錄每次提交的轰豆,分支的創(chuàng)建和合并其實就是對指針的操作,效率可見一斑
對GIT的一些誤區(qū)
- git≠github
git是分布式的版本控制系統(tǒng)
github是一個托管git庫的網(wǎng)站齿诞,使用git作為代碼版本管理工具,github是全球最大的代碼開源網(wǎng)站酸休,上面的大部分git庫都是公開(public)的,就是所有人都可以訪問祷杈,也有私有庫(private),只有擁有權限的人才可以訪問
gitlab是一個用于倉庫管理系統(tǒng)的開源項目斑司,可以理解成和github是一樣的,提供web界面管理git倉庫但汞,但是可以搭建在私有服務器上宿刮,保證代碼安全
- git不慢
感覺大部分人都覺的git很慢,這是一個很大的誤區(qū)私蕾,可能是大部分人剛開始都是通過github接觸git的僵缺,github的服務器在國外,而且我大天朝的網(wǎng)絡環(huán)境踩叭,大家都懂的磕潮,其實從上面對git和svn實現(xiàn)原理的比較翠胰,顯然git比svn快,如果我們都用內(nèi)網(wǎng)的git服務自脯,就不會感覺git慢了
- 覺得git麻煩
可能是大部分人一接觸git之景,需要一大堆配置就覺得麻煩,所以要給大家講明白為什么需要這些配置膏潮,git使用的ssh協(xié)議(http也支持)锻狗,ssh通過公私玥來加密數(shù)據(jù),所以一開始會讓大家生成一個公鑰并上傳到網(wǎng)站上焕参,為了標明每次commit是誰提交的轻纪,會配置開發(fā)者的一些基本信息
- git和svn一樣簡單易上手
為什么這么說呢,因為從本質(zhì)上來說龟糕,都是版本管理系統(tǒng)桐磁,我們從常用的幾個操作來說:
操作 | svn | git |
---|---|---|
從服務器拉工程 | check out | clone |
提交 | commit | commit->push |
更新 | update | pull |
可以發(fā)現(xiàn)步驟基本是一樣的
為什么使用GIT?
- 為了裝逼?
- 因為別人用讲岁,所以我們也用我擂?
肯定不是這些原因,使用git是為了:
- 提高開發(fā)效率!
git不僅僅是一個代碼版本管理工具缓艳,也是一個文檔管理工具校摩,在git上很容易維護一個文檔
git可以提高開發(fā)效率,主要表現(xiàn)在:
- 合并對提交過程的保留
- 修正提交
- 廉價好用的本地分支
- 更強大智能的合并能力
- 完整配套的開發(fā)過程設施(wiki issue 功能大贊阶淘!)
- 查看日志