Git與SVN對比

Git與SVN對比

GitSVN都是版本控制系統,版本控制是指對軟件開發過程當中各類程序代碼、配置文件及說明文檔等文件變動的管理,是軟件配置管理的核心思想之一,最主要的功能就是追蹤文件的變動。html

描述

SVN是集中式管理的版本控制器,而Git是分佈式管理的版本控制器,這是二者之間最核心的區別。
SVN只有一個單一的集中管理的服務器,保存全部文件的修訂版本,而協同工做的人們都經過客戶端連到這臺服務器,取出最新的文件或者提交更新。
Git每個終端都是一個倉庫,客戶端並不僅提取最新版本的文件快照,而是把原始的代碼倉庫完整地鏡像下來,每一次的提取操做,實際上都是一次對代碼倉庫的完整備份。
相對來講分佈式管理系統功能更強大一些,但一樣的上手難度也就高一些,固然分佈式代碼版本管理系統並不必定適合全部團隊,好比中小團隊可能更關心的只是成本更低,簡單易用,那麼SVN等這類集中式版本管理工具仍是更爲適合,可是無論團隊最終選用什麼代碼版本管理工具,只要適合本身的團隊的開發流程和工做方式,而且代碼管理順暢就能夠了。git

詳細對比

差別 SVN Git
系統特色 1. 集中式版本控制系統,文檔管理很方便。
2. 企業內部並行集中開發
3. windows系統上開發推薦使用
4. 克隆一個擁有將近一萬個提交commit,五個分支,每一個分支有大約1500個文件,用時將近一個小時
1. 分佈式系統,代碼管理很方便。
2. 開源項目開發。
3. MacLinux系統上開發推薦使用。
4. 克隆一個擁有將近一萬個提交commit、五個分支、每一個分支有大約1500個文件,用時1分鐘。
靈活性 1. 搭載SVN的服務器若是出現故障,就沒法與之交互。
2. 全部的SVN操做都須要中央倉庫交互,例如拉分支,看日誌等。
1. 能夠單機操做,Git服務器故障也能夠在本地Git倉庫工做。
2. 除了pushpullfetch操做,其餘均可以在本地操做。
3. 根據本身開發任務任意在本地建立分支。
4. 日誌都是在本地查看,效率較高。
安全性 較差,按期備份,而且是整個SVN都得備份。 較高,每一個開發者的本地就是一套完整版本庫,記錄着版本庫的全部信息。
分支方面 1. 拉分支更像是copy一個路徑。
2. 可針對任何子目錄進行branch
3. 拉分支的時間較慢,由於拉分支至關於copy
4.建立完分支後,影響所有成員,每一個人都會擁有這個分支。
5.多分支並行開發較重,工做較多並且繁瑣。
1. 我能夠在Git的任意一個提交點commit point開啓分支。
2. 拉分支時間較快,由於拉分支只是建立文件的指針和HEAD
3. 本身本地建立的分支不會影響其餘人。
4. 比較適合多分支並行開發。
5. Git checkout hash切回以前的版本,無需版本回退。
6. 強大的cherry-pick
工做流程 1. 每次更改文件以前都得update操做,有的時候修改過程當中這個文件有更新,commit不會成功。
2. 有衝突,會打斷提交動做,衝突解決是一個提交速度的競賽:手快者,先提交,平安無事;手慢者,後提交,可能遇到麻煩的衝突解決。
1. 開始工做前進行fetch操做,完成開發工做後push操做,有衝突解決衝突。
2. Git的提交過程不會被打斷,有衝突會標記衝突文件。
3. Gitflow經典流程。
內容管理 SVN對中文支持好,操做簡單。 對程序的源代碼管理方便,代碼庫佔用的空間少,易於分支化管理。
學習成本 使用起來更方便,SVN對中文支持好,操做簡單。 更在意效率而不是易用性,成本較高,有不少獨有的命令如rebase、遠程倉庫交互的命令等等。
權限管理 SVN的權限管理至關嚴格,能夠按組、我的針對某個子目錄的權限控制,每一個目錄下都會有個.SVN的隱藏文件。 Git沒有嚴格的權限管理控制,只有帳號角色劃分。
管理平臺 有功能很是完善的插件。 除功能插件外,還有GitlabGerritGithub等。

每日一題

https://Github.com/WindrunnerMax/EveryDay

參考

https://juejin.cn/post/6844903619813179405
https://www.cnblogs.com/ssgeek/p/9642171.html
https://www.cnblogs.com/Sungeek/p/9152223.html
相關文章
相關標籤/搜索