SVN與GIT的區別
- 概念
SVN:集中化的版本控制系統
GIT:分布式版本控制系統
集中化的系統,受限于服務器,比如:提交記錄,如果我離線的話,提交記錄是看不到的;代碼更改,我想查看每次提交的更改也很困難;
文件記錄方式
SVN:記錄每個文件的變化,每個版本存儲前后變化的差異數據
GIT:記錄整體數據的變化,每次提交,把所有文件生成一個快照,和前面一次提交對比,若文件沒變化,直接指向上一次文件,只記錄變化的文件分支的創建和合并
SVN:每次分支都是對之前代碼重新拷貝到一個新目錄
GIT:分支的創建和合并代價很小,十分方便
很明顯的一個地方是文件的大小,SVN有幾個分支,大小就增加幾倍,而git使用指針記錄每次提交的,分支的創建和合并其實就是對指針的操作,效率可見一斑
對GIT的一些誤區
- git≠github
git是分布式的版本控制系統
github是一個托管git庫的網站,使用git作為代碼版本管理工具,github是全球最大的代碼開源網站,上面的大部分git庫都是公開(public)的,就是所有人都可以訪問,也有私有庫(private),只有擁有權限的人才可以訪問
gitlab是一個用于倉庫管理系統的開源項目,可以理解成和github是一樣的,提供web界面管理git倉庫,但是可以搭建在私有服務器上,保證代碼安全
- git不慢
感覺大部分人都覺的git很慢,這是一個很大的誤區,可能是大部分人剛開始都是通過github接觸git的,github的服務器在國外,而且我大天朝的網絡環境,大家都懂的,其實從上面對git和svn實現原理的比較,顯然git比svn快,如果我們都用內網的git服務,就不會感覺git慢了
- 覺得git麻煩
可能是大部分人一接觸git,需要一大堆配置就覺得麻煩,所以要給大家講明白為什么需要這些配置,git使用的ssh協議(http也支持),ssh通過公私玥來加密數據,所以一開始會讓大家生成一個公鑰并上傳到網站上,為了標明每次commit是誰提交的,會配置開發者的一些基本信息
- git和svn一樣簡單易上手
為什么這么說呢,因為從本質上來說,都是版本管理系統,我們從常用的幾個操作來說:
操作 | svn | git |
---|---|---|
從服務器拉工程 | check out | clone |
提交 | commit | commit->push |
更新 | update | pull |
可以發現步驟基本是一樣的
為什么使用GIT?
- 為了裝逼?
- 因為別人用,所以我們也用?
肯定不是這些原因,使用git是為了:
- 提高開發效率!
git不僅僅是一個代碼版本管理工具,也是一個文檔管理工具,在git上很容易維護一個文檔
git可以提高開發效率,主要表現在:
- 合并對提交過程的保留
- 修正提交
- 廉價好用的本地分支
- 更強大智能的合并能力
- 完整配套的開發過程設施(wiki issue 功能大贊!)
- 查看日志