對于所有版本控制系統,項目文件都位于遠程服務器上,當您在本地計算機上完成工作時,可以將文件推送到遠程服務器上。但是,決定使用集中版本控制系統(如SVN)還是分布式版本控制系統(如Git)將影響提交更改的方式。
SVN
SVN也被稱為Subversion,它代表了市場上最流行的集中版本控制系統。在中央系統中,所有文件和歷史數據都存儲在中央服務器上,開發人員直接將其更改提交到中央服務器存儲庫。
SVN工作由三部分組成:
- Trunk:主干,當前穩定的代碼和產品的中心。
- Branches:分支,存放新代碼和功能的地方。
- Tags:標簽,被視為給定時間點上分支的副本。標簽不會在開發期間使用,而是在分支代碼完成后的部署期間使用。用標簽標記代碼可以方便地查看代碼,如果有必要,還可以回滾代碼。
這個過程看起來是這樣的:開發一個新的功能,首先獲取主干的精確副本并將其放入分支區域內的新文件夾中,然后進行功能的開發,功能開發完成后,合并回主干。
Git
與SVN不同,Git使用多個倉庫:一個中央倉庫和一系列本地倉庫。本地倉庫是中央倉庫的精確副本,包含整個更改歷史。
Git的工作流程這里不作過多的贅述,大家有機會可以看看Git-Flow。Git的優點如下:
- 提交速度更快。在SVN中,本地的修改可能會頻繁地提交到中央倉庫中,因此網絡流量會降低每個人的速度,相比之下,使用Git,主要是在本地倉庫上工作,只需要每隔一段時間才會提交到中央倉庫。
- 沒有更多的單點故障。使用SVN,如果中央存儲庫出現故障或某些代碼破壞了構建,那么在修復中央倉庫之前,其他開發人員都無法提交其代碼。而使用Git,每個開發人員都有自己的本地倉庫,因此中央倉庫是否損壞都沒有關系。
- 可以離線使用。與SVN不同,Git可以離線使用,從而使您的團隊在沒有網絡的情況下繼續工作而不會丟失功能。
結束語
SVN也好,Git也罷,它們都能解決我們工作中出現的一些實際問題,至于更傾向于哪種?我的答案當然是Git,畢竟有事沒事需要到GitHub上溜達下。那么你的答案呢?