5個區別,參考:http://www.vaikan.com/5-fundamental-differences-between-git-svn/ html
1. Git是分佈式的,SVN是集中式的,好處是跟其餘同事不會有太多的衝突,本身寫的代碼放在本身電腦上,一段時間後再提交、合併,也能夠不用聯網在本地提交;git
2. Git下載下來後,在本地沒必要聯網就能夠看到全部的log,很方便學習,SVN卻須要聯網;安全
3. Git鼓勵分Branch,而SVN,說實話,我用Branch的次數還挺少的,SVN自帶的Branch merge我還真沒用過,有merge時用的是Beyond Compare工具合併後再Commit的;服務器
4. Tortoise也有出Git版本,真是好東西;app
5. SVN在Commit前,咱們都建議是先Update一下,跟本地的代碼編譯沒問題,並確保開發的功能正常後再提交,這樣其實挺麻煩的,有好幾回同事沒有先Updata,就Commit了,發生了一些錯誤,耽誤了你們時間,Git可能這種狀況會少些。分佈式
SVN工做流程:
svn
開始新一天的工做:函數
一、從服務器下載項目組最新代碼。工具
二、進入本身的分支,進行工做,每隔一個小時向服務器本身的分支提交一次代碼(不少人都有這個習慣。由於有時候本身對代碼改來改去,最後又想還原到前一個小時的版本,或者看看前一個小時本身修改了哪些代碼,就須要這樣作了)。學習
三、下班時間快到了,把本身的分支合併到服務器主分支上,一天的工做完成,並反映給服務器。
這就是經典的svn工做流程,從流程上看,有很多缺點,但也有優勢。
缺點:1若是不能鏈接到服務器上,就不能提交,還原,對比等,基本上不能工做。
2不適合開源開發(開發人數很是很是多,可是Google app engine就是用svn的)。可是通常集中式管理的有很是明確的權限管理機制(例如分支訪問限制),能夠實現分層管理,從而很好的解決開發人數衆多的問題
優勢:易於管理,集中式服務器更能保證安全性,適合開發人數很少的項目。
Ghoststears:任何事情,歸根結底都是人的問題,工具只是工具。
SVN 是集中式的,會出現你說的耦合。但從另一個方面來講,這也要求開發人員代碼的規範:不要一個函數幹不少事情,不要一個文件寫不少個類。 另外,將不可運行的代碼提交到任何版本控制系統中都是沒有意義的。這也就是版本控制的核心思想之一。也就是提交的粒度:原子性。所謂的原子性,也就是完成一件任務,這個任務能夠是一個函數聲明,也能夠是一個函數的實現,亦或是一個子系統。但這個任務的完成的標誌就是代碼能夠運行,不能運行的代碼,最多也就是完成了半個任務。這個是不符合版本控制思想的。試想,你 update 到某一個 version 的時候,代碼居然是不能運行的,是何心情???另外,不少人都強調:我晚上下班了要在家裏幹活,不能提交!!!來抨擊集中式版本控制工具。且不說對待工做和生活態度。先看看國內的企業,防員工如防賊的多的去了。有多少人能帶着筆記本,把公司的源代碼簽出來呢???版本控制系統中,工具只是其中一環。要結合公司的策略來選用合適的工具。版本控制 != 版本控制工具 !!!= 源代碼管理。