Git(分佈式版本控制系統) | Svn(集中式版本控制系統) | |
定義 | Git是目前世界上最早進的分佈式版本控制系統。 | SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統,說得簡單一點SVN就是用於多我的共同開發同一個項目,共用資源的目的。 |
工做流程 |
1.寫代碼安全 2.提交到本地版本庫服務器 3.從服務器拉回服務器的當前版本庫,並解決服務器版本庫與本地代碼的衝突網絡 4.將遠程庫與本地代碼合併結果提交到本地版本庫分佈式 5.將本地版本庫推到服務器svn |
1.寫代碼性能 2.從服務器拉回服務器的當前版本庫,並解決服務器版本庫與本地代碼的衝突開放源代碼 3.將本地代碼提交到服務器版本控制 |
是否有中央服務器 | 沒有中央服務器,開發人員本地都有 Local Repositoryblog |
有。開發人員須要從中央服務器得到最新版本的項目而後在本地開發,開發完推送給中央服務器。所以脫離服務器開發者是幾乎沒法工做的資源 |
網絡依賴 |
分佈式在沒有網絡的狀況下也能夠執行commit、查看版本提交記錄、以及分支操做,在有網絡的狀況下執行 push 到 Remote Repository。 |
必需要聯網才能工做,並且對網絡的依賴性較強,若是推送的文件比較大並且網絡情況欠佳,則提交文件的速度會受到很大的限制。 |
文件存儲格式 | 按照元數據方式存儲,體積很小 |
按照原始文件存儲,體積較大 |
分支操做影響 | 分支操做不會影響其餘開發人員 |
建立新的分支則全部的人都會擁有和你同樣的分支 |
提交過程 | 提交是本地操做,須要執行push操做纔會到主要版本庫 |
提交的文件會直接記錄到中央版本庫 |
優點 | 1.分佈式管理:Git是沒有中心服務器的,每一個人機器上都是一個完整的庫 2.離線工做:(1)斷網提交至本地庫(2)本地回滾 3.分支策略:在Git實際開發中分支的分離和合並是屬於平常操做,開啓和合並分支成本相比SVN要小得多:SVN是複製一份代碼到分支目錄,Git則是在分支點作一下標。
|
1.集中式管理,管理方式在服務端配置好,客戶端只須要同步提交便可,使用方便,操做簡單,很容易就能夠上手 2.在服務端統一控制好訪問權限,利用代碼的安全管理。 3.全部的代碼以服務端爲準,代碼一致性高。 |
缺點 | 1.模式上比SVN更加複雜 2.代碼保密性差,一旦開發者把整個庫克隆下來就能夠徹底公開全部代碼和版本信息 |
1.全部操做都須要經過服務端進行同步,這會致使服務器性能要求比較高。若是服務器宕機了就沒法提交代碼了。 2.分支管理不靈活,svn分支是一個完整的目錄,且這個目錄擁有完整的實際文件,這些操做都是在服務端進行同步的,不是本地化操做,若是要刪除分支,也是須要將遠程的分支進行刪除,這會致使你們都得同步 3.須要連網,若是沒法鏈接到服務器就沒法提交代碼 |