SVN
SVN 作為一個開源的版本控制系統(tǒng)酬核,管理著碎時間改變的數(shù)據蜜另,這些數(shù)據放置在一個中央資料檔案庫(repository
)中。這個檔案庫就像一個普通的文件服務器嫡意,它會記住每次文件的變動举瑰。我們可以瀏覽文件的變動歷史,把當前版本的文件恢復到舊的版本蔬螟。
集中式代碼管理的核心是服務器此迅,所有的版本信息都放在服務器上,因此受到網絡的限制旧巾。所有開發(fā)者在開始一天的工作前都要從服務器獲取最新版本的代碼耸序,然后進行開發(fā),再提交代碼鲁猩,解決沖突坎怪。
Git
Git 是一款開源的分布式版本控制系統(tǒng),可以敏捷高效的處理或大或小的項目绳匀。 分布式和 SVN 等集中式的最大區(qū)別在于每個開發(fā)人員從中心版本庫/服務器上 check out 代碼后會在自己的機器上克隆一個自己的版本庫芋忿。這樣在沒有網絡的情況下在本地也可以進行開發(fā)炸客,代碼管理疾棵。
Git 的一些功能特性:
- 從服務器上克隆完整的Git倉庫(包括代碼和版本信息)到單機上;
- 在自己的機器上根據不同的開發(fā)目的痹仙,創(chuàng)建分支是尔,修改代碼;
- 在單機上自己創(chuàng)建的分支上提交代碼开仰;
- 在單機上合并分支拟枚;
- 把服務器上最新版的代碼fetch下來薪铜,然后跟自己的主分支合并;
- 生成補丁(patch)恩溅,把補丁發(fā)送給主開發(fā)者隔箍;
......
Git 是一個系統(tǒng),相當于一個工具脚乡,而 Github 就是基于這樣一個系統(tǒng)的平臺蜒滩,讓開發(fā)者更高效地使用 Git 去托管自己的代碼。
Git 與 SVN 區(qū)別
Git 是分布式的奶稠,SVN 是集中式的俯艰。好處是跟其他同事不會有太多沖突,自己寫的代碼放在自己電腦上锌订,一段時間后再提交竹握、合并,也可以在不用聯(lián)網在本地提交辆飘。
Git 把內容按元數(shù)據方式存儲啦辐,而 SVN 是按文件。所有的資源控制系統(tǒng)都是把文件的元信息隱藏在一個類似
.svn
,.cvs
等的文件夾里蜈项。如果你把.git
目錄的體積大小跟.svn
比較昧甘,你會發(fā)現(xiàn)它們差距很大。因為,.git
目錄是處于你的機器上的一個克隆版的版本庫战得,它擁有中心版本庫上所有的東西充边,例如標簽,分支常侦,版本記錄等浇冰。Git 分支和 SVN 的分支不同。分支在 SVN 中一點不特別聋亡,就是版本庫中的另外的一個目錄肘习。而 Git 可以從同一個工作目錄下快速的在幾個分支間切換。
Git 沒有一個全局的版本號坡倔,而 SVN 有漂佩。SVN 里容易閱讀的數(shù)字版本號,它實際是任何一個相應時間的源代碼快照罪塔。
Git 的內容完整性要優(yōu)于 SVN投蝉。Git 的內容存儲使用的是 SHA-1 哈希算法。這能確保代碼內容的完整性征堪,確保在遇到磁盤故障和網絡問題時降低對版本庫的破壞瘩缆。
SVN 和 Git 的適用性
SVN 更適用于項目管理, Git 僅適用于代碼管理佃蚜。一個研發(fā)隊伍的成員正常包括:需求分析庸娱、設計着绊、美工、程序員熟尉、測試归露、實施、運維斤儿,每個成員在工作中都有產出物靶擦, 包括了文檔、設計代碼雇毫、程序代碼玄捕,這些都需要按項目集中進行管理的。SVN 能清楚的按目錄進行分類管理棚放,使項目組的管理處于有序高效的狀態(tài)枚粘。
參考文章
項目管理Git與SVN
Git和SVN之間的五個基本區(qū)別
注,文章只作為個人知識整理飘蚯,學習使用馍迄。如有違規(guī)可隨時@我,謝謝局骤。