推薦選擇方案:偏向美術或文件管理使用SVN,偏向開發使用git。二者也可以結合使用,不同工作環境使用不同的版本管理,發揮各自的優勢。
======
作為一名資深的git與SVN的使用者和管理者,下面談談兩種版本管理工具各自的優勢與劣勢,以幫助需要的人做出正確的選擇。
管理模式
- Git:分布式
- SVN:集中式
> 共同點:
- Git 跟 SVN都有自己的集中式版本庫或服務器。
>不同點:
- Git 更傾向于被使用于分布式模式,也就是每個開發人員從中心版本庫/服務器上克隆一個跟中心版本庫一模一樣的本地版本庫。
分支
> 共同點:二者都可以創建分支、合并分支等操作。
>不同點:
- 分支方式:git分支是基于某一版本克隆一個完整的版本;SVN分支可以選擇版本中某一部分內容作為分支內容。
- 本地文件路徑:git的分支是通過版本管理來切換本地目錄顯示的版本(分支),同時只能查看/操作一個版本(分支)內容;SVN分支相當于在另一個目錄選擇性的做了一個備份,可以同時查看操作兩個分支的內容。
文件操作與版本控制
> 相同點:對所有文件都有修改記錄,可以查看對比還原之前的所有版本。
> 不同點:git偏向于整體項目的版本管理,SVN偏向于文件的版本管理;SVN可以還原單個文件到任一版本,git只能還原整體項目到任意版本。
服務端與客戶端
git與SVN都可以在服務端做權限管理,git的服務端通常會附帶問題管理功能。
客戶端:二者均有GUI界面客戶端,SVN客戶端界面看起來相對古老,git有很多第三方GUI界面,界面更符合當下審美。
學習成本
git難于SVN,這點對推廣影響非常大。
軟件支持
側重美術、文件管理的軟件支持SVN較多,側重開發的軟件通常都會支持git。
git與SVN沒有絕對的優勢或劣勢,只看哪個工具更適合。在個人學習或個人項目中,我通常會使用git,因為它有很多云端平臺,方便文件存儲,如github、碼云等,并且可以使用其自帶的問題管理系統;對于公司項目如開頭所述,依項目定。