SVN集中式版本控制:每一個人的版本都是提交到服務器,服務器壞了就雪崩。
git分佈式版本控制: 安全,每人本地有個版本庫,每一個人均可以充當‘服務器git
它的使用流程不須要聯機,能夠先將對代碼的修改,保存在本機。等上網以後,再實時推送過去。github
git
提交是個本地操做,相對svn
閃電通常。安全
本地包含了完整的日誌,無需網絡服務器
git向遠程服務器推送提交內容相比svn更快網絡
和 SVN不一樣,一個Git項目通常只在項目的根目錄下建一個「.git」目錄,而SVN則會在項目的每個目錄下建一個」.svn」目錄ssh
Git把全部的歷史提交信息所有存儲在「Git目錄」裏,它就是一個Git項目的倉庫;你對本地的源代碼進行編輯修改後建立的提交也都會先保存在這裏面,而後再推送到遠端的服務器。當咱們我把項目目錄和「Git目錄」一塊兒拷到其它電腦裏,它能立刻正常的工做(全部的提交信息全都保存在Git目錄裏);甚至能夠只把「Git目錄」拷走也行,可是要再簽出(checkout)一次。分佈式
svn
在模型上是沒有分支和tag
的。tag
是經過目錄權限限制(對開發只讀)來保證不變。svn
git
模型上支持tag
,保證只讀。工具
git
:合併操做保留原有的提交過程(即保留了合併來源的做者、提交次數、分離提交的內容)。spa
svn
:合併操做把來源多個提交合併成了一個合併提交,即在提交歷史中Crash了天然的提交過程。
git
:重命名(不管文件還有目錄)提交 , 能夠合併上文件重命名前的這些文件的提交。
svn
:重命名(不管文件還有目錄)提交後,你本地/或是分支上 有文件重命名前的這些文件的修改或提交,在作合併操做時,恭喜,你會碰上傳說中難搞的樹衝突!
由於害怕svn
樹衝突,在包名調整(重命名目錄)或類名調整(重命名文件)前,我不得不先向一塊兒開發的組員廣播:
git
:有本地分支
svn
:無本地分支
git
能夠方便建立本地分支,且建立分支的時間是O(1)
,即瞬間就建立好了。因爲分支能夠是本地的,也就不存在svn
目錄權限的問題。
git中全部數據在存儲前都計算校驗和,而後以校驗來引用,因此你在傳輸中丟失文件,git都知道。具有斷點續傳功能。
(1)git的入門,稍微有點麻煩,須要在本機建立一個ssh的鑰匙。
(2)圖形化操做界面不及svn那麼好用
git是一個很是強大的版本管理工具。github則是一個基於git的日益流行的開源項目託管庫。
Git把全部的歷史提交信息所有存儲在「Git目錄」裏,它就是一個Git項目的倉庫;你對本地的源代碼進行編輯修改後建立的提交也都會先保存在這裏面,而後再推送到遠端的服務器。當咱們我把項目目錄和「Git目錄」一塊兒拷到其它電腦裏,它能立刻正常的工做(全部的提交信息全都保存在Git目錄裏);甚至能夠只把「Git目錄」拷走也行,可是要再簽出(checkout)一次。