Git和SVN的區別


前幾天同事問我多人協作代碼管理上的問題,建議他是用分支,目前項目使用的是SVN,因此就想到了Git和SVN的分支有很大區別

那SVN和Git都是有哪些區別呢?

1.Git是分布式的,SVN是集中式的

  SVN必須有一個服務器版本庫就放在一個中央服務器。所有開發人員都是與服務器進行交互的。

  Git更傾向於分布式開發,每台計算機上都有一個完整的本地版本庫,和服務器上的一模一樣。所以即使沒有網絡也一樣可以Commit,查看歷史版本記錄,創建項 目分支等操作。也有中心服務器,僅僅是為了方便交換大家的修改。

  去中心化的好處?

    操作處理速度快

    安全性更高。Git每個人的電腦都有完整的版本庫,SVN集中式版本控制的中央服務器要是出了問題,所有人都沒法干活了,一次需要定期備份,並且是整個SVN都得備份

    不依賴網絡

2.Git把內容按元數據方式存儲,而SVN是按文件

  SVN保存前后變化的差異數據

  Git只關心文件數據的整體發生變化,更像是把文件做快照,文件沒有改變時,分支只想這個文件的指針不會改變,文件發生改變,指針指向新版本

3.Git沒有一個全局版本號,而SVN有  

  SVN版本號進行控制,每次操作都會產生一個高版本號

  Git采用40 位長的哈希值作為版本號,沒有先后之分

4. Git的內容的完整性要優於SVN

  GIT的內容存儲使用的是SHA-1哈希算法。這能確保代碼內容的完整性,確保在遇到磁盤故障和網絡問題時降低對版本庫的破壞

5.分支不同

  Svn 創建分支,其實就是創建了一個新的文件夾(目錄)並擁有實際的文件的。相當於拷貝了一份源文件。創建完分支后,影響全部成員,每個人都會擁有這個分支。拉分支相當於copy時間較慢。多分支並行開發較重。

  Git可以在任意一個提交點(commit point)開啟分支,並沒有創建文件夾,你甚至看不到任何的改變。創建一個分支,就是多了一個索引文件,記錄這個分支的變化,占用很小的空間。拉分支時間較快,拉分支只是創建文件的指針和HEAD。用戶可以在同一個文件夾中,快速的切換不同的分支。每個分支,都是獨立的,在這個分支里想做什么都可以,對其他分支沒有一點影響。比較適合多分支並行開發。

6.管理權限不同

  svn的權限管理相當嚴格,可以按組、個人針對某個子目錄的權限控制

  Git沒有嚴格的權限管理控制,只有賬號角色划分

7.工作流程不同

  SVN每次更改文件之前都得update操作,有沖突,會打斷提交動作

  Git開始工作前進行fetch操作,完成開發工作后push操作,有沖突解決沖突。git的提交過程不會被打斷,有沖突會標記沖突文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM