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